这是我的代码:
type ComparatorFunc<T> = (o1: T, o2: T) => number;
export interface Comparable<T> {
compareTo(o: T): number;
test(func: ComparatorFunc<T>);
}
let c: Comparable<number> = null;
c.test((a: number) => { return 0}); //LINE X
正如您在X行看到的那样,我仅传递一个参数,但在ComparatorFunc类型中则需要两个参数。但是,TypeScript在此行不显示错误。如何解决?
答案 0 :(得分:1)
这不是错误。 TypeScript不需要您在函数的声明中声明所有参数,因为它们可能未在函数的主体中使用(因此可以使代码更简洁)。重要的是执行将始终以所需的参数数量和类型进行。例如:
// This is valid. No parameters used, so they're not declared.
const giveMe: ComparatorFunc<string> = () => 42
// However during the execution, you need to pass those params.
giveMe() // This will result in an error.
giveMe("the", "answer") // This is fine according to the function's type.