给定
type Maybe<T> = T | undefined;
class Obj {
jbo: Maybe<Jbo>;
}
,是可以定义一个函数,给予o: Maybe<Obj>
断言类型两者的o
和o.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] 删除。
我来说两句