Неправильное количество параметров в типе функции в TypeScript

#javascript #typescript

#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, я передаю только один параметр, но в type ComparatorFunc требуется два параметра. Однако TypeScript не показывает ошибку в этой строке. Как это исправить?

Ответ №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.