Typescript - создание типа, в котором ключи берутся из ранее существовавшего типа - но не обязательно - PullRequest
0 голосов
/ 01 мая 2020

Название может быть немного запутанным, поэтому давайте попробуем объяснить лучше.

Скажем, у меня есть тип с именем Stage.

type Stage = 'beta' | 'gamma' | 'prod';

Я хочу создать новый тип, где ключи могут быть только от Stage - но я не хочу требовать, чтобы все возможные ключи Stage были ключами для созданного объекта.

Например, что-то вроде этого было бы хорошо:

const obj: NewVal = {
    beta: value,
    prod: value2,
};

Я пытался использовать следующее:

type NewVal = Record<Stage, string>;

type NewVal = { [key in Stage]: string };

, но для обеих этих опций требуется, чтобы все ключи Stage присутствовали на объекте. Использование Partial, кажется, работает, но оно создает больше проблем при работе с возможными значениями undefined, поэтому я бы предпочел не иметь с этим дело.

Есть ли способ достичь sh того, что я ' я пытаюсь сделать?

1 Ответ

0 голосов
/ 02 мая 2020

Будет ли

type NewVal = { [key in Stage]?: string };

решать ваши проблемы? Или это слишком близко к Partial?

...