TypeScript中的函数类型中的参数数量错误

时间:2019-04-21 18:07:05

标签: javascript typescript

这是我的代码:

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在此行不显示错误。如何解决?

1 个答案:

答案 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.