如果我在我的反应应用程序中使用打字稿元组,我会在 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
后修复了它。
以下是 let
和 const
之间的一些复杂问题,详见 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
错误是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
后修复了它。
以下是 let
和 const
之间的一些复杂问题,详见 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