我正在研究Underscore.js的带注释的源代码.
http://underscorejs.org/docs/underscore.html#section-41
这是_.first方法:
_.first = _.head = _.take = function(array, n, guard) {
if (array == null) return void 0;
return (n == null) || guard ? array[0] : slice.call(array, 0, n);
};
Run Code Online (Sandbox Code Playgroud)
题:
为什么'返回void 0;' 而不仅仅是'回归' ?据我所知,return隐式返回函数的undefined(值!).就像'return void 0'一样.
片段和错误:
const methods = {
a(value: number) {},
b(value: string) {}
};
function callMethodWithArg(methodAndArg: { method: 'a'; arg: number; } | { method: 'b'; arg: string; }) {
methods[methodAndArg.method](methodAndArg.arg);
}
Run Code Online (Sandbox Code Playgroud)
'string | 类型的参数 number” 不可分配给“never”类型的参数。类型“string”不可分配给类型“never”。
看起来打字稿不够智能,无法弄清楚a只能用数字调用方法,而b只能用字符串调用方法。
有什么建议如何正确输入吗?