Roh*_*lor 6 javascript issue-tracking typescript typescript2.4
TypeScript 版本 2.4.2,编译为--target ES6
代码行:
var coins: { coin: number}[] = [1,1,1]
Run Code Online (Sandbox Code Playgroud)
导致 TypeScript 抛出
错误 TS2322:类型“number[]”无法分配给类型“{ coin:number;}[]'
然而,该行:
var coins: { coin: number}[] = Array(3).fill(1)
Run Code Online (Sandbox Code Playgroud)
编译成功,没有错误。
这是 TypeScript 错误,还是预期行为(不是对以这种方式声明的数组进行类型检查)?如果是这样,为什么?
问题是Array(3)创建一个长度为 3 且类型为 3 的数组any[],然后fill对该数组进行操作。由于any可以分配给任何类型,any[]也可以分配给任何其他类型数组(包括{ coin: number})
如果你要指定类型参数,Array你会得到一个错误:
var coins: { coin: number}[] = Array<{ coin: number}>(3).fill(1) // 1 is not assignable to { coin: number}
Run Code Online (Sandbox Code Playgroud)
不幸的是,没有办法防止省略数组的类型参数。
| 归档时间: |
|
| 查看次数: |
265 次 |
| 最近记录: |