{ a: 1, b: 2}
не является string
, но вы пытаетесь использовать его в качестве значения свойства в объекте с сигнатурой индекса [Key: string]: string
(поскольку T
равно string
).
Если вы хотите, чтобы значение было объектом со свойствами a
и b
, вам необходимо использовать соответствующий тип для этого, а не string
. Например:
interface Dictionary<T> {
[Key: string]: T;
}
const data: Dictionary<{ a: number, b: number }> = {
key: { a: 1, b: 2}
};
Или еще лучше, определите для него тип и используйте тип:
interface Dictionary<T> {
[Key: string]: T;
}
type Example = { a: number, b: number };
const data: Dictionary<Example> = {
key: { a: 1, b: 2}
};
Живой пример на детской площадке
Примечание 1: Нет необходимости использовать синтаксис вычисляемого свойства со строковым литералом (['key']
). Просто используйте строковый литерал или литерал имени свойства.
Примечание 2:
Я искал ярлык, чтобы создать быструю структуру данных, к которой я могу получить доступ с помощью данных: ключ.
Map
хорошо для этого. Или, если вам известны значения ключей заранее, определенного типа объекта или Record<K, T>
.