是否可以在TypeScript中组合用户定义的类型防护?

gen

给定

type Maybe<T> = T | undefined;

class Obj {
    jbo: Maybe<Jbo>;
}

,是可以定义一个函数,给予o: Maybe<Obj>断言类型两者的oo.jbo

我在想类似的东西:

function everythingIsDefined(o: Maybe<Obj>):o is Obj && o.jbo is Jbo {
    // checks in here
}
贾卡尔兹

用户定义的typeguard只能返回一个x is T幸运的是,您可以在中选择并集和交集T因此,例如:

function everythingIsDefined(o: Maybe<Obj>): o is Obj & {jbo: Jbo} {
    return typeof o !== 'undefined' && typeof o.jbo !== 'undefined';
}

everythingIsDefined函数断言输入既是一个Obj(与未定义相对)是一个对象,其jbo属性是一个Jbo(与未定义相对)。因此,您可以像这样使用它:

if (everythingIsDefined(obj)) {
  console.log(obj.jbo.toString()) // no error
} 

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

通过接口以编程方式创建Typescript用户定义类型防护

否定的用户定义类型防护

是否可以在TypeScript批注中组合多种类型的成员?

如何使Typescript中的类方法用户类型防护工作?

是否可以在 VBA 中定义用户定义类型的常量?

TypeScript中函数的类型防护

用户定义的类型防护和lodash

箭头样式用户定义的类型防护?

是否可以在 Typescript 中为接口定义动态类型?

是否可以在Typescript中定义非空数组类型?

推断TypeScript中类型防护的并集类型

Typescript中的类型可以定义为包含字符的组合吗?

用户定义的外部类型/嵌套属性的类型防护?

在Typescript中是否可以定义'string类型数组的对象?(类型检查的正确位置?)

如何定义具有多个输出的组合用户定义原语 (UDP)?

Dask数据框中的多个聚合用户定义函数

是否可以在TypeScript中定义具有属性的函数而无需类型断言或中间函数?

是否可以在TypeScript的类中定义类型(字符串文字联合)?

是否可以在idris的函数定义中使用防护措施?

是否可以从用户定义的函数中获取用户的输入?

是否可以将ValidationRules和INotifyDataErrorInfo的组合用于wpf验证?

在c中重新定义类型,但包括防护吗?

用户定义类型可以在Cassandra中引用其他用户定义类型吗?

TypeScript:让库用户定义类型

限制 TypeScript 中的类型组合

如何为“字符串”编写用户定义的类型防护。“文字” | “类型”?

在Typescript中,是否可以从现有对象中声明“类型”?

函数可以在处理中返回用户定义的类型吗?

是否可以在golang中使用反射来获取用户定义类型的基础类型?