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>[];
