gpt4 book ai didi

arrays - TypeScript 如何推断数组文字的元素类型?

转载 作者:搜寻专家 更新时间:2023-10-30 21:17:11 25 4
gpt4 key购买 nike

特别是为什么这段代码可以编译(使用 --noImplicitAny)

function x() {
const c = [];
c.push({});
c.indexOf({});
return c;
}

虽然,这不是:

function x() {
const c = [];
c.indexOf({});
c.push({});
return c;
}

enter image description here

最佳答案

这是预期的行为,请参阅此 GitHub issue .那里描述的功能与您的类似,问题是为什么在打开 noImplicitAny 时不会引发错误:

function foo() {
const x = []
x.push(3)
return x
}

The type of the array is inferred to be an "evolving array" type. it then becomes number after the first x.push. foo should be returning number []. If the type of x is witnessed before control flow can determine its type, and error is produced. e.g.:

function foo() {
const x = []
x.push(3)
return x;

function f() {
x; // error, x is `any`.
}
}

因此在您的情况下,indexOf 在确定类型并引发错误之前见证数组的类型。如果在 push 之后调用 indexOf,则确定类型并且不会引发错误。

关于arrays - TypeScript 如何推断数组文字的元素类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52804806/

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