如果我在我的react-app中使用一个打字稿元组,我会在vscode的第1行收到eslint错误?

问题描述

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

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

export default () => {
  let something: [string,boolean]
  something = ['something',true];
}
我错过了什么吗?所有其他类型似乎都可以正常工作。

解决方法

如果我正确理解您的意见,这是您的解决方案(您不必创建let即可注册类型,而直接在函数中指定它将返回的类型)

// 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可以解决此问题。

TypeScript网站上的letconst之间有些复杂之处:https://www.typescriptlang.org/docs/handbook/variable-declarations.html#let-vs-const

,

问题

问题在于,当您创建元组类型select * from chat.messages where senderId = 1 and receiverId = 0 or senderId = 0 and receiverId = 1 order by id DESC LIMIT 0,10 时,这是一种使用Typescript 4.0中引入的称为Labeled Tuple Types的数组声明类型的新方法。

解决方案

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...