建议
🔍 搜索词
嵌套用户自定义类型保护
✅ 可实现性检查清单
我的建议满足以下准则:
- 这不会对现有的TypeScript/JavaScript代码造成破坏性的改变
- 这不会改变现有JavaScript代码的运行时行为
- 这可以在不根据表达式的类型发出不同的JS的情况下实现
- 这不是一个运行时特性(例如库功能,带有JavaScript输出的非ECMAScript语法,JS的新语法糖等)
- 这个特性将与TypeScript's Design Goals的其他部分保持一致。
⭐ 建议
目前,类型保护只能返回布尔值( x is SomeType
)。我认为允许这个Assert嵌套在一个更复杂的返回类型中是有好处的。
Playground链接
📃 动机示例
function validate(data: IData): { error?: string, isValid: data is ValidData } {
if (!data.name) {
return { error: "Name is required", isValid: false }
} else {
return { isValid: true }
}
}
💻 用例
目前,我们要么在使用它们时Assert属性( data.name!
),要么在检查中手动对对象进行类型转换:
if (isValid) {
const validData = someData as IValidData
}
1条答案
按热度按时间w46czmvw1#
相关: #46650