function fun(is: true);
function fun(is: false);
function fun(is: boolean) {
console.log('executed');
}
fun(true, ''); // ok
fun(false, 0); // ok
fun(1 > 0); // error
实际上我知道这是因为在编译之前我们不知道1 > 0
将返回什么,但是我可以以某种方式摆脱它吗?
我不想添加第三个重载function fun(is: boolean);
,因为我遇到了第二个参数取决于第一个参数的情况。
function fun(is: true, secondParameter: number);
function fun(is: false, secondParameter: string);
function fun(is: boolean, secondParameter: number | string);
function fun(is: boolean) {
console.log('executed');
}
fun(true, 0); // ok
fun(false, '0'); // ok
fun(1 > 0, '0'); // ok
fun(1 < 0, '0'); // ok
查看第三和第四通电话。那就是我要避免的。我需要保护类型。如果第一个参数为true,则第二个必须为数字,否则为字符串。不幸的是,当我需要用表达式调用乐趣时,它就不起作用了