flowtype - چگونه این نوع لمبدا را از فلو به تایپاسکریپت ترجمه کنم؟


من در حال تلاش برای تبدیل قطعه کد زیر از فلو به تایپاسکریپت هستم

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

همانطور که هست، TS نوع لامبدای arrToObjs را دوست ندارد.

نماد غیرمنتظره، انتظار میرفت ";" (361:28)
359 | header: string[]=headAndLines.header,
360 | groups: string[][]= headAndLines.groups,
361 | arrToObjs: (string[]) => {[string]: any}[]=makeArrayToObjectsFunction(errorInfo, spaceCountToTab, header),

من سعی کردهام کل عبارت را داخل پرانتز قرار دهم

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

اما این کمکی نمیکند.

تابع arrToObjs تابعی است که یک آرایه از رشتهها میگیرد و یک آرایه از نقشههای {string: any} برمیگرداند. راه درست نوشتن این امضای نوع در TypeScript چیست؟

پاسخ شماره ۱

شما باید متغیرهای خود را نامگذاری کنید:

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

همچنین، اگر یک آرایه از نقشهها بازگردانید، میتوانید از نوع Map استفاده کنید:

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