我做了以下转换:
sourceArray: {string: SomeObject}
-> [string, SomeObject][]
-> [string, () => void][]
->{string: () => void}
类似这样:
// Из кода убраны лишние детали для облегчения понимания
let something: Record<string, () => void> =
Object.fromEntries(
Object.entries(sourceArray)
.filter(([name, someObject]) => true)
.map(([name, someObject]) => [someObject.name, () => openModal(someObject.data)]
)
但是,当我将结果分配给类型字段时,Record<string, () => void>
它给出了一个错误:
Тип "(get: any) => { [k: string]: () => void; }" не может быть назначен для типа "Record<string, () => void>".
В типе "(get: any) => { [k: string]: () => void; }" отсутствует сигнатура индекса для типа "string".
为什么我不能转换{ [k: string]: () => void; }
为Record<string, () => void>
,我该怎么做?
事实证明我犯了一个愚蠢的错误:我希望该属性是一个 get 方法,但我不小心这样做了,因此没有创建 get 属性,而是返回一个带有 get 参数的方法