gpt4 book ai didi

typescript - 为什么这个未定义的检查不适用于 find 函数?

转载 作者:行者123 更新时间:2023-12-03 21:07:16 26 4
gpt4 key购买 nike

有人可以解释为什么在下面的例子中,变量 z有类型 number ,但在电话内 f1(x.y) , x.y有类型 number | undefined

const f1 = (value: number) => !!value;

const f2 = (x: { y: number | undefined}): void => {
if (x.y === undefined || !isFinite(x.y)) {
throw new Error('Not a number');
}

const z = x.y; // z & x.y has type number
['stuff', 'here'].find(item => f1(x.y)); // x.y has type number | undefined
};
Playground example

最佳答案

问题是在箭头函数内部,编译器不确定类型缩小是否仍然有效。

const f1 = (value: number) => !!value;

const f2 = (x: { y: number | undefined}): void => {
if (x.y === undefined || !isFinite(x.y)) {
throw new Error('Not a number');
}
// z is `number`, so use `z` again in the arrow function to "keep" the type narrowing
const z = x.y;
['stuff', 'here'].find(item => f1(z));
};
TypeScript Playground

关于typescript - 为什么这个未定义的检查不适用于 find 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65721327/

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