如果我正在使用(严格的null检查)TypeScript,并且我有一些可能带有null变量的代码:
let x = null;
if (someCondition) {
x = { a: 1 };
}
doSomethingWith(x.a);
正如预期的那样,我得到了一个错误:
“x”可能为“null”。
我可以用
null
检查:
if (!x) return;
doSomethingWith(x.a);
但后来我得到:
类型“never”上不存在属性“a”。
实际上
if
/
return
,我想写的是
assert
呼叫:
const assert = value => { if (!value) throw Error(); }
assert(x);
doSomethingWith(x.a);
……但这甚至不能消除第一个错误。
我发现我可以用以下方法修复第二个错误:
(rootGroup as {id: number}).id
但我不确定这是否是最简单的解决方案,而且它仍然不能解决使用
明确肯定
作用
我的问题是,我怎么能。。。?
-
创建一个“可能为null”的变量
-
运行一个函数来证明它不是null(如果是null,则抛出一个错误)
-
添加(尽可能少的)TypeScript代码,然后
-
使用该变量,不会出现任何TS错误