Тип "(get: any) => { [k: string]: () => void; }" не может быть назначен для типа "Record<string, () => void>"

Рейтинг: 0Ответов: 1Опубликовано: 26.08.2023

Я выполняю следующие преобразования: 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>, и как мне сделать это?

Ответы

▲ 0Принят

Оказывается я допустил глупейшую ошибку: я хотел что бы свойство являлось get-методом, и я случайно сделал так, что создаётся не get свойство, а возвращается метод, который принимает аргумент get