Интерфейс для ассоциативного массива объектов в TypeScript

У меня есть такой объект:

var obj = {
    key1: "apple",
    key2: true,
    key3: 123,
    .
    .
    .
    key{n}: ...
}

So obj может содержать любое количество именованных ключей, но все значения должны быть либо строками, либо bool, либо числом.

Как объявить тип obj в качестве интерфейса в TypeScript? Можно ли объявить ассоциативный массив (или вариационный кортеж) типа объединения или что-то подобное?

Ответ 1

Да, вы можете использовать индексную подпись:

interface MyType {
    [key: string]: string | boolean | number;
}

var obj: MyType = {
    key1: "apple",
    key2: true,
    key3: 123
};