通知打字稿函数已引发异常

时间:2018-12-08 07:00:14

标签: typescript

我有这段代码,其行为符合我的预期:

if (!groupRef) {
  throw new Error('a group ref is required to get dimenstions in ActivityLabel');
}


const bBox = groupRef.current.getBBox();

groupRef可以是未定义的,但是可以在if表达式满足打字稿的情况下检查其是否存在,以免引发编译器错误Object is possibly 'undefined'

我还使用invariant来断言第一个参数是真实的或引发异常。

但是打字稿并没有意识到这应该确保它的存在:

invariant(!!groupRef, 'a group ref is required to get dimenstions in ActivityLabel');

const bBox = groupRef.current.getBBox();

不变式的类型定义是这样的:

declare let invariant:invariant.InvariantStatic;

export = invariant;
export as namespace invariant;

declare namespace invariant {
  interface InvariantStatic {
    (testValue:any, format?:string, ...extra:any[]):void;
  }
}

它声明该函数返回void。

无论如何,我是否像不变的throw代码一样,用不变的类型定义告诉打字稿?

0 个答案:

没有答案