Существует ли в TypeScript дискриминатор объединения «все, кроме (…)»?

#typescript

#typescript

Вопрос:

Возможно, проще всего начать с примера:

 enum Season {
    Spring,
    Summer,
    Autumn,
    Winter
}
    
interface WinterForecast {
    season: Season.Winter;
    snowfall: number;
}
    
interface RestOfYearForecast {
    season: Season.Spring | Season.Summer | Season.Autumn; // can I shorten this?
    rainfall: number;
}
  

Могу ли я как-то указать season in RestOfYearForecast как «все в сезон, кроме зимы» вместо перечисления всех возможных значений?

Комментарии:

1. typescriptlang.org/docs/handbook/…

2. Ах, отлично, спасибо. Не могли бы вы опубликовать это в качестве ответа вместо этого?

Ответ №1:

 interface RestOfYearForecast {
  season: Exclude<Season, Season.Winter>
  rainfall: number;
}