В нескольких местах моего приложения я объявляю типы словарей, например:
interface MyInterface {
data: { [key: string]: Item };
}
Есть ли в TypeScript какое-либо встроенное сокращение для словарей/карт, чтобы получить что-то похожее на:
interface MyInterface {
data: Dict<Item>;
}
Мы можем попробовать встроенный расширенный тип typescript под названием Record<K, T>
interface MyInterface {
data: Record<string, Item>;
}
Соедините все здесь
interface Item {
id: string;
name: string;
}
interface MyInterface {
data: Record<string, Item>;
}
const obj: MyInterface = {
data: {
"123": { id: "123", name: "something" }
}
};
Так как ключи будут всегда string
: type Dictionary<T> = Record<string, T>
Record
намного лучше, чем моя предыдущая попытка, спасибо.
Другое решение:
export interface Dict<T> {
[key: string]: T;
}
Это тип Dict
, использующий на орбите.js.
Вы можете попробовать Record<K,T> для более подробной информации typescriptlang.org/docs/handbook/advanced-types.html