У меня есть функция, которая принимает необязательный аргумент boolean
, который по умолчанию равен false
. Когда аргумент false
, функция возвращает string
. Когда аргумент true
, функция должна возвращать тип never
.
Вот что я попробовал:
function example(arg: true): never;
function example(arg = false): string {
//...
}
Такое ощущение, что это должно работать: arg
выведено наимеют тип boolean
, и когда он не передан или передан как false
, example
возвращает string
. Когда он передается как true
, перегрузка срабатывает и example
возвращает never
.
Однако это не работает вообще. TypeScript дает arg
тип true
, делает его обязательным и делает example
всегда return never
.
Я тоже попробовал это безумие и подобрался ближе:
function example(arg: false): string;
function example(arg: true): never;
function example(arg: boolean): string | never;
function example(arg = false): string | never {
//...
}
Однако компилятор все еще не считает arg
необязательным.