【问题标题】:How do I translate this lambda type from Flow to TypeScript?如何将此 lambda 类型从 Flow 转换为 TypeScript?
【发布时间】:2019-05-21 17:57:14
【问题描述】:

我正在尝试将以下代码 sn-p 从 Flow 转换为 TypeScript

let headAndLines = headerAndRemainingLines(lines, spaceCountToTab),
      header: string[] = headAndLines.header,
      groups: string[][]= headAndLines.groups,
      arrToObjs: (string[]) => {[string]: any}[] = makeArrayToObjectsFunction(errorInfo, spaceCountToTab, header),
      ....

目前,TS 不喜欢 arrToObjs 的 lambda 类型。

意外的令牌,应为“;” (361:28)
359 |标题:字符串[] = headAndLines.header,
360 |组:字符串[][]= headAndLines.groups,
361 | arrToObjs: (string[]) => {[string]: any}[] = makeArrayToObjectsFunction(errorInfo, spaceCountToTab, header),

我试过用括号括住整个表达式

(string[]) => {[string]: any}[]) 

但这无济于事。

arrToObjs 是一个函数,它接受一个字符串数组并返回一个{string: any} 的映射数组。在 TypeScript 中编写此类型签名的正确方法是什么?

【问题讨论】:

    标签: typescript flowtype


    【解决方案1】:

    您需要为变量命名:

    let arrToObjs:(x: string[]) => { [key: string]: any }[];
    

    另外,如果你返回一个地图数组,你可以使用地图类型:

    let arrToObjs:(x: string[]) => Map<string, any>[];
    

    【讨论】:

      猜你喜欢
      • 2019-05-20
      • 1970-01-01
      • 2012-03-01
      • 2017-05-10
      • 2021-12-29
      • 2021-01-22
      • 2021-01-17
      • 2020-05-19
      • 2018-04-16
      相关资源
      最近更新 更多