如果我在 react-app 中使用 typescript 元组,我会在 vscode 的第 1 行收到 eslint 错误吗?

IT技术 reactjs typescript create-react-app
2021-05-05 23:57:27

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

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

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

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

3个回答

问题

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

解决方案

将您的 react-scripts 升级到 v4(这是他们 github 上的问题)。如果您yarn使用的是命令yarn upgrade react-scripts@4.0.1. 用 npm 应该是类似的,你可以试试npm install react-scripts@4.0.1

如果我理解你,这是你的解决方案(你不必创建一个让来注册类型,而是直接在函数中指定它将返回哪些类型)

// 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关键字。let在仅使用JavaScript 多次之后转换为 TS 时,我遇到了这个问题,但没有遇到任何问题,但更改后将const修复。

下面是一些复杂性之间letconsttypescript网站上详细介绍:https://www.typescriptlang.org/docs/handbook/variable-declarations.html#let-vs-const