gen*_*gen 2 javascript types casting typescript
特定
type Maybe<T> = T | undefined;
class Obj {
jbo: Maybe<Jbo>;
}
Run Code Online (Sandbox Code Playgroud)
,是否有可能定义一个函数,给定一个o: Maybe<Obj>断言两者的类型o和o.jbo?
我想的是:
function everythingIsDefined(o: Maybe<Obj>):o is Obj && o.jbo is Jbo {
// checks in here
}
Run Code Online (Sandbox Code Playgroud)
用户定义的typeguard只能返回一个x is T.幸运的是,你可以选择使用工会和十字路口T.所以,例如:
function everythingIsDefined(o: Maybe<Obj>): o is Obj & {jbo: Jbo} {
return typeof o !== 'undefined' && typeof o.jbo !== 'undefined';
}
Run Code Online (Sandbox Code Playgroud)
的everythingIsDefined函数断言,输入是两个的Obj(相对于未定义的),和一个对象,其jbo属性是一个Jbo(相对于未定义).所以你可以像这样使用它:
if (everythingIsDefined(obj)) {
console.log(obj.jbo.toString()) // no error
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
326 次 |
| 最近记录: |