为什么此代码中没有任何编译错误? 代码:
function partial(f: (a: string) => string, a: string) : string {
return "";
}
var test = () => "";
var result = partial(test, "");
功能"部分"将一个参数作为第一个参数,它接受一个参数,但是我传递给它的函数,它没有任何参数,而打字稿编译器认为,这是正常的。我知道这不会破坏任何东西,因为你可以将世界上的所有参数传递给不带任何参数的函数,并且它不会破坏任何东西,但它应该是编译错误,因为typescript是关于类型的,并且有明显的类型错配,它可能是开发人员的错误。
此问题是否有解决方法?
答案 0 :(得分:2)
有明显的类型不匹配,可能是开发人员的错误。
这段代码没有明显的错误。考虑这样的事情:
let items = [1, 2, 3];
// Print each item in the array
items.forEach(item => console.log(item));
这段代码是否正确?非也!但forEach
使用三个参数调用其提供的函数,而不是一个。写下来会很乏味:
items.forEach((item, unused1, unused2) => console.log(item));
请注意,如果您尝试执行实际上错误的操作,仍会出现错误。例如:
function printNumber(x: number) { console.log(x); }
let strings = ['hello', 'world'];
strings.forEach(printNumber); // Error, can't convert string to number