Пример использования: когда перечисление B должно содержать все значения из перечисления A и некоторые дополнительные значения.
Вы также можете создавать перечисления, расширяющие другие перечисления TypeScript, используя такие константные утверждения:
const GameResultEnum = {
WINNER: 'Winner',
LOSER: 'Loser'
} as const;
type GameResultEnum = typeof GameResultEnum[keyof typeof GameResultEnum];
const SoccerGameResultEnum = { ...GameResultEnum, DRAW: 'Draw' } as const;
type SoccerGameResultEnum = typeof SoccerGameResultEnum[keyof typeof
SoccerGameResultEnum];
Реализация:
let gameResult: GameResultEnum, soccerGameResult: SoccerGameResultEnum;
gameResult = GameResultEnum.WINNER; // no errors
gameResult = SoccerGameResultEnum.WINNER; // SoccerGameResultEnum can also be used
gameResult = SoccerGameResultEnum.DRAW; // correctly throws errors
Я нашел решение здесь