#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.