我目前正在研究 Typescript 中的重载。
假设我有一个带有一个重载的函数:
function method(): void;
function method(foo: boolean, bar: boolean): void;
function method(foo?: boolean, bar?: boolean) {
if (foo === true || foo === false) {
const result = bar;
}
}
Run Code Online (Sandbox Code Playgroud)
要么不带参数调用该函数,要么带两个参数(foo 和 bar)调用该函数。根据 vscode 的智能感知,该result变量的类型为boolean | undefined。
为什么bar可以undefined,即使我已经测试foo参数?如果foo存在,类型推断不应该预测它也bar存在吗?