[英]How does TypeScript infer element type for array literals?
這是預期的行為,請參閱此GitHub 問題 。 那里描述的功能與您的相似,問題是為什么打開noImplicitAny
不會出現錯誤:
function foo() {
const x = []
x.push(3)
return x
}
數組的類型被推斷為“進化數組”類型。 然后它變成
number
后的第一個x.push
。 foo應該返回number []
。 如果在控制流可以確定x
的類型之前就看到了x
的類型,則會產生錯誤。 例如:
function foo() {
const x = []
x.push(3)
return x;
function f() {
x; // error, x is `any`.
}
}
因此,在您的情況下, indexOf
在確定類型並引發錯誤之前會見證數組的類型。 如果在push
后調用indexOf
,則確定類型,並且不會引發錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.