TypeScript 允许在返回对象中嵌套用户定义的类型保护

kmpatx3s  于 5个月前  发布在  TypeScript
关注(0)|答案(1)|浏览(51)

建议

🔍 搜索词

嵌套用户自定义类型保护

✅ 可实现性检查清单

我的建议满足以下准则:

  • 这不会对现有的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
}

相关问题