传播算子的打字稿抛出错误

时间:2018-07-22 10:48:33

标签: javascript reactjs typescript ecmascript-6

我在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)〜

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

enter image description here

2 个答案:

答案 0 :(得分:2)

该错误表明编译器无法识别JSX语法。为了使其能够被识别,文件应具有.tsx扩展名,而当前具有.ts扩展名。

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

答案 1 :(得分:0)

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

已经像上面一样导入了反应:

import * as React from "react";

还将tsx选项设置为在tsconfig中反应

现在我回答自己的问题:

Ofc,如果您正在处理对象,则需要使用Object.assign()

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