javascript - Typescript kräver typ baserat på värde
Jag är ny på TypeScript och jag undrade om det finns ett sätt att göra en typ obligatorisk baserat på värdet av en annan typ:
type TextInput = {
isValid?: boolean;
validMessage?: string;
}
Är det möjligt att göra validMessage obligatoriskt om isValid blir sant?
Svar #1
Du behöver använda diskriminerade unioner:
type Valid = {
isValid: true;
validMessage: string
}
type Invalid = {
isValid: false;
}
type TextInput = Valid | Invalid
const foo = (props: TextInput) => {
if (props.isValid) {
props.validMessage // ok
} else {
props.isValid // false
props.validMessage // error
}
}
Lekplats
Se även relaterade dokument
