typescript - 如何在没有错误的 Typescript 中使用数组解构?
问题描述
我在 Typescript 中写了一些代码:
for (const [a, b] of [['1', 2],['3', 4]]) {
console.log(a.substr(0));
}
在 javascript 中,它可以工作,并输出:
1
3
但是在 Typescript 中,这会导致附近出现编译错误substr
:
TS2339: Property 'substr' does not exist on type 'string | number'. Property 'substr' does not exist on type 'number'.
似乎编译器无法从字符串/数字确认 a 的类型。
我认为这是 TypeScript 的错误。我错了吗?或者如果有更好的方法来做到这一点?
解决方案
这不是一个错误。基本上,当您编写 时['1', 2]
,Typescript 会将其理解为<string | number>[]
而不是[string, number]
. 所以如果你想强制它为[数字,字符串],你必须定义类型
for (const [a, b] of <[string, number][]>[['1', 2],['3', 4]]) {
console.log(a.substr(0));
}