У меня есть функция, которая принимает необязательный аргумент 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
всегда возвращает never
.
Я тоже попробовал это безумие, и подобрался поближе:
function example(arg: false): string;
function example(arg: true): never;
function example(arg: boolean): string | never;
function example(arg = false): string | never {
//...
}
Однако компилятор по-прежнему не считает arg
необязательным.