use*_*467 6 type-inference typescript
这是一个基本用例:使用 null 初始化变量,然后更改某些嵌套循环/函数中的值:
let a: number | null = null;
[1].forEach(() => {
a = 1;
});
if (a != null)
a.toFixed(); // Error: Property 'toFixed' does not exist on type 'never'.
Run Code Online (Sandbox Code Playgroud)
但是 typescript 推断a的类型是never。我会假设没有if它会假设它null | number在这种情况下我会得到一个错误,指出该属性不存在于 null,但为什么它假设它永远不会仅基于初始分配值。
难道我做错了什么?
如果您绝对确定a那里有值,那么您可以将 放在!变量后面
let a: number | null = null;
[1].forEach(() => {
a = 1;
});
if (a !== null)
a!.toFixed(); //
Run Code Online (Sandbox Code Playgroud)
我不会使用null思想但是undefined,所以不需要使用!
let a: number | undefined;
[1].forEach(() => {
a = 1;
});
if (a) { // <-- if undefined or 0
a.toFixed(); // No problem here
}
Run Code Online (Sandbox Code Playgroud)
也作为建议使用!==不!=
| 归档时间: |
|
| 查看次数: |
645 次 |
| 最近记录: |