iro*_*nic 2 arrays type-inference literals typescript
特别是,为什么这段代码编译(使用--noImplicitAny)
function x() {
const c = [];
c.push({});
c.indexOf({});
return c;
}
Run Code Online (Sandbox Code Playgroud)
虽然,这不是:
function x() {
const c = [];
c.indexOf({});
c.push({});
return c;
}
Run Code Online (Sandbox Code Playgroud)
这是预期的行为,请参阅此GitHub 问题.这里描述的功能类似于你的,问题是为什么启动时不会出现错误noImplicitAny:
function foo() {
const x = []
x.push(3)
return x
}
Run Code Online (Sandbox Code Playgroud)
推断阵列的类型是"演化阵列"类型.它然后变成
number第一个之后x.push.foo应该回来了number [].如果x在控制流可以确定其类型之前见证了类型,则会产生错误.例如:
function foo() {
const x = []
x.push(3)
return x;
function f() {
x; // error, x is `any`.
}
}
Run Code Online (Sandbox Code Playgroud)
因此,在您的情况下,indexOf可以在确定类型并引发错误之前见证数组的类型.如果indexOf在push确定类型后调用,则不会引发错误.
| 归档时间: |
|
| 查看次数: |
285 次 |
| 最近记录: |