考虑以下函数重载:
function f(key: undefined);
function f(key: string | undefined, value: object | undefined);
Run Code Online (Sandbox Code Playgroud)
我希望使用单个显式未定义来进行符合条件的调用f(undefined),但是对于所有其他情况需要两个参数.并且上面的工作正常,直到我传递一个带有类型的变量any - 似乎any可以被转换为undefined(是的,它似乎是合乎逻辑的,因为它是任何).
我如何禁止与单个anyargumnent通话?
完整的演示代码:
function f(key: undefined);
function f(key: string | undefined, value: object | undefined);
function f(key: string | undefined, value?: object | undefined) {
console.log(key, value);
}
// No errors - RIGHT
f(undefined);
f("", {});
f("", undefined);
f(undefined, undefined);
f(undefined, {});
// Errors - RIGHT
f("");
// No errors - WRONG
declare var …Run Code Online (Sandbox Code Playgroud) typescript ×1