【发布时间】:2020-03-29 03:12:44
【问题描述】:
考虑以下函数重载:
function f(key: undefined);
function f(key: string | undefined, value: object | undefined);
我想使用单个显式未定义f(undefined) 进行符合条件的调用,但在所有其他情况下需要两个参数。上面的重载工作正常,直到我传递一个类型为 any 的变量 - 似乎 any 可以转换为 undefined (是的,这似乎是合乎逻辑的)。
如何禁止使用单个 any 参数调用?
完整的demo code:
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 x: any;
f(x);
【问题讨论】:
标签: typescript