我想知道我是否可以在 TypeScript 中使用条件类型?
目前我有以下界面:
interface ValidationResult {
isValid: boolean;
errorText?: string;
}
但我想删除
errorText
,并且只有当 isValid
是 false
作为 属性需要 0x24134119 时才有它我希望我能够将其编写为以下界面:
interface ValidationResult {
isValid: true;
}
interface ValidationResult {
isValid: false;
errorText: string;
}
但如你所知,这是不可能的。那么,您对这种情况有何看法?
最佳答案
对这种逻辑建模的一种方法是使用联合类型,像这样
interface Valid {
isValid: true
}
interface Invalid {
isValid: false
errorText: string
}
type ValidationResult = Valid | Invalid
const validate = (n: number): ValidationResult => {
return n === 4 ? { isValid: true } : { isValid: false, errorText: "num is not 4" }
}
然后编译器能够根据 bool 标志缩小类型
const getErrorTextIfPresent = (r: ValidationResult): string | null => {
return r.isValid ? null : r.errorText
}
关于javascript - TypeScript 中的条件类型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59172416/