У меня есть объявление функции машинописи с разной арностью:
function f(): void;
function f(code: 0): void;
function f(code: 1, msg: string): void;
function f(code: 0 | 1 = 0, msg?: string): void { /* omit implementation */ }
Таким образом, оно может быть вызвано как:
f() // ok
f(0) // ok
f(1, "error message") // ok
f(0, "message") // type error
f(1) // type error
Мой вопрос заключается в том, как я могу реорганизовать это объявление функции без использованияперегрузка функции? (Например, с типами объединения, условными типами и т. Д.)