传播运算符的打字稿抛出错误

Posted

技术标签:

【中文标题】传播运算符的打字稿抛出错误【英文标题】:Typescript throwing errors for spread operators 【发布时间】:2018-12-30 01:13:19 【问题描述】:

我在 react 中使用 typescript 并且下面的文件抛出了很多错误,我不知道为什么(它作为 js 工作),但我怀疑这里与传播运算符有关?

import React from 'react'
import  Subscribe  from 'unstated'

const getStoreAsProps = (storeArr) => 
  const storeProps = 
  storeArr.map((value) => (storeProps[value.name] = value))
  return storeProps


const withStore = (...args) => (Element) => () => (
  <Subscribe to=[...args]>(...args) => <Element ...getStoreAsProps(args) /></Subscribe>
)

export default withStore

tsc 抛出的错误是

workspace/app/store/index.ts:11:14 - 错误 TS1005: '>' 预期。

11 (...args) => ~~

workspace/app/store/index.ts:11:16 - 错误 TS1005: ')' 预期。

11 (...args) => ~

workspace/app/store/index.ts:11:19 - 错误 TS1109:表达式 预计。

11 (...args) => ~~~

workspace/app/store/index.ts:11:26 - 错误 TS1005: ',' 预期。

11 (...args) => ~

workspace/app/store/index.ts:11:30 - 错误 TS1136:属性分配 预计。

11 (...args) => ~

workspace/app/store/index.ts:11:40 - 错误 TS1005: ';'预计。

11 (...args) => ~~

workspace/app/store/index.ts:11:52 - 错误 TS1005: '>' 预期。

11 (...args) => ~

workspace/app/store/index.ts:11:80 - 错误 TS1109:表达式 预计。

11 (...args) => ~

workspace/app/store/index.ts:11:81 - 错误 TS1109:表达式 预计。

11 (...args) => ~

workspace/app/store/index.ts:11:83 - 错误 TS1110:预期类型。

11 (...args) => ~

workspace/app/store/index.ts:11:84 - 错误 TS1161:未终止 正则表达式字面量。

11 (...args) =>

workspace/app/store/index.ts:12:1 - 错误 TS1128:声明或 预期的声明。

12) ~

如果有帮助,语法高亮也会在那里中断

【问题讨论】:

试试import * as React from "react"; 【参考方案1】:

这些错误意味着编译器无法识别 JSX 语法。为了使其被识别,该文件应具有 .tsx 扩展名,而它目前具有 .ts 扩展名。

jsx compiler option 也应启用并设置为react

【讨论】:

【参考方案2】:

我有同样的问题: let temp: any = ...props.data.map((row:any) =&gt; return row.json);

React 已经像上面那样导入了:

import * as React from "react";

tsx 选项也设置为在 tsconfig 中做出反应

现在我回答我自己的问题:

如果你正在处理一个对象,你需要使用 Object.assign()

let temp: any =  Object.assign(, props.data.map((row:any) => return row.json));

【讨论】:

以上是关于传播运算符的打字稿抛出错误的主要内容,如果未能解决你的问题,请参考以下文章

类型的打字稿传播运算符[重复]

在带有 loadClass 的打字稿中使用 es6 类和猫鼬

如何在打字稿元组中使用扩展运算符?

不传播的原因是啥(es 6传播运算符)javascript错误对象[重复]

当任何数学运算产生“NaN”时,如何强制 C# 编译器抛出异常?

如何在未定义上使用/控制错误传播运算符