number) {
if (!Signed) {
if (value < 0) {
throw "Nope"
} else {
this.value = value
}
}
}
}
Можно ли как-нибудь это завести, i.e. получить значение Signed?
Типов в рантайме нет, что ты хочешь сделать?
class Int<Signed extends boolean> { value: number constructor(signed: Signed, value: number) { if (!signed) { if (value < 0) { throw "Nope" } else { this.value = value } } } } Может так?
♿️
function createIntConstructor<Signed extends boolean>(signed: Signed) { return class Int { value: number _signed: Signed; constructor(value: number) { if (!signed) { if (value < 0) { throw "Nope" } else { this.value = value } } } } } const SignedInt = createIntConstructor(true); const UnsignedInt = createIntConstructor(false); (new SignedInt(5))._signed; // true (new UnsignedInt(5))._signed; // false Круто, что можно замкнуть тип функцией
Обсуждают сегодня