I have this type:
JavaScript
x
8
1
export type SupportedSourceLanguages =
2
| LanguageISOCode.En
3
| LanguageISOCode.Es
4
| LanguageISOCode.Pt
5
| LanguageISOCode.De
6
| LanguageISOCode.Ko
7
| LanguageISOCode.It;
8
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):
JavaScript
1
14
14
1
const environment = 'production';
2
3
type LiveSupportedSourceLanguages =
4
| LanguageISOCode.En
5
| LanguageISOCode.Es
6
| LanguageISOCode.Pt
7
| LanguageISOCode.De;
8
9
type DevSupportedSourceLanguages =
10
| LanguageISOCode.Ko
11
| LanguageISOCode.It;
12
13
export type SupportedSourceLanguages = LiveSupportedSourceLanguages extends environment === 'production' ? DevSupportedSourceLanguages : never;
14
Advertisement
Answer
You need to check if const’s type extends 'production'
:
JavaScript
1
4
1
export type SupportedSourceLanguages = typeof environment extends 'production'
2
? LiveSupportedSourceLanguages
3
: DevSupportedSourceLanguages;
4