gpt4 book ai didi

Typescript - 错误地推断 'never'

转载 作者:搜寻专家 更新时间:2023-10-30 20:56:58 27 4
gpt4 key购买 nike

这是一个基本用例:用 null 初始化一个变量,然后在某个嵌套循环/函数中更改值:

let a: number | null = null;
[1].forEach(() => {
a = 1;
});

if (a != null)
a.toFixed(); // Error: Property 'toFixed' does not exist on type 'never'.

但是 typescript 将 a 的类型推断为 never。我会假设没有 if 它会假设它是 null | number 在这种情况下,我可能会收到一条错误消息,指出该属性在 null 上不存在,但为什么它假设它永远不会仅基于初始分配值。

我做错了什么吗?

最佳答案

如果您绝对确定 a 在那里有一个值,那么您可以将 ! 放在变量后面

let a: number | null = null;
[1].forEach(() => {
a = 1;
});

if (a !== null)
a!.toFixed(); //

我不会使用null,而是undefined,所以不需要使用!

let a: number | undefined;
[1].forEach(() => {
a = 1;
});

if (a) { // <-- if undefined or 0
a.toFixed(); // No problem here
}

同时建议使用 !== 而不是 !=

关于Typescript - 错误地推断 'never',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54769781/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com