如果我在我的反应应用程序中使用打字稿元组,我会在 vscode 中的第 1 行收到 eslint 错误?

If I use a typescript tuple in my react-app i get a eslint error on line 1 in vscode?

错误是Parsing error: Cannot read property 'map' of undefined

我设置了一个新文件只是为了重现错误:

export default () => {
  let something: [string, boolean]
  something = ['something', true];
}

我错过了什么吗?所有其他类型似乎都可以正常工作。

如果我对你的理解正确,这是你的解决方案(你不必创建 let 来注册类型,而是直接在函数中指定它将要注册的类型 return)

// main.ts
export default (): [string, boolean] => {
 return ["something", true];
};

如果你需要调用这段代码,你只需创建这样一个组件(示例):

import foo from "./main.ts"

const App = () => {
  return (
    <div>
      {foo().map(el =>
        <div>
          {el}
        </div>
      )}
    </div>
  )
};

的确,问题似乎与使用 let 关键字有关。 我在 JavaScript 中使用 let 几次后转换为 TS 时遇到了这种情况,但更改为 const 后修复了它。

以下是 letconst 之间的一些复杂问题,详见 TypeScript 网站:https://www.typescriptlang.org/docs/handbook/variable-declarations.html#let-vs-const

问题

问题是当您创建元组类型时 [string, boolean] 这是一种使用 Typescript 4.0 中引入的数组声明类型的新方法,称为 Labeled Tuple Types

解决方案

将您的反应脚本升级到 v4 (Here is the issue on their github)。如果您使用 yarn,请使用命令 yarn upgrade react-scripts@4.0.1。用npm应该是类似的东西,你可以试试npm install react-scripts@4.0.1