I have this type:
export type SupportedSourceLanguages =
| LanguageISOCode.En
| LanguageISOCode.Es
| LanguageISOCode.Pt
| LanguageISOCode.De
| LanguageISOCode.Ko
| LanguageISOCode.It;
I don't want those last two to be in the type when a condition is met. How can I conditionally add those last two values only when the condition is met?
This was my approach (but it's not working):
const environment = 'production';
type LiveSupportedSourceLanguages =
| LanguageISOCode.En
| LanguageISOCode.Es
| LanguageISOCode.Pt
| LanguageISOCode.De;
type DevSupportedSourceLanguages =
| LanguageISOCode.Ko
| LanguageISOCode.It;
export type SupportedSourceLanguages = LiveSupportedSourceLanguages extends environment === 'production' ? DevSupportedSourceLanguages : never;
CodePudding user response:
You need to check if const's type extends 'production'
:
export type SupportedSourceLanguages = typeof environment extends 'production'
? LiveSupportedSourceLanguages
: DevSupportedSourceLanguages;