首页 > 解决方案 > 如何在没有错误的 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 的错误。我错了吗?或者如果有更好的方法来做到这一点?

标签: typescript

解决方案


这不是一个错误。基本上,当您编写 时['1', 2],Typescript 会将其理解为<string | number>[]而不是[string, number]. 所以如果你想强制它为[数字,字符串],你必须定义类型

  for (const [a, b] of <[string, number][]>[['1', 2],['3', 4]]) {
    console.log(a.substr(0));
  }

推荐阅读