Не уверен, как определить типы параметров функции

#javascript #typescript

#javascript #typescript

Вопрос:

С помощью следующего кода, как бы я заменил any s, если это вообще возможно. Я хотел бы удалить предупреждение из TS «Неожиданный любой. Укажите другой тип»

 interface Props {
    isPrime: boolean;
}
interface Other {
    isEdit: boolean;
}
type TFunc = (a: any, b: any) => any;
const myFunc = (c: TFunc) => (a: any) => (b: any) => c(a, b);

const funcA = myFunc((props: Props, other: Other) => {
    // ..somecode
}
// Code to call the func A result ect.
 

Комментарии:

1. Подсказка: myFunc должно быть названо curry , это стандартное имя для этой функции. При поиске этого термина вы найдете множество общих типов для него.

2. Спасибо Берги. Будем иметь это в виду

Ответ №1:

Используйте универсальный тип

 
interface Props {
  isPrime: boolean;
}
interface Other {
  isEdit: boolean;
}
type TFunc<T, U> = (a: T, b: U) => any;
const myFunc = <T, U>(c: TFunc<T, U>) => (a: T) => (b: U) => c(a, b);

const funcA = myFunc<Props, Other>((props: Props, other: Other) => {
  // ..somecode
});
 

Комментарии:

1. Блестяще. Спасибо

2. any Остался еще один, который следует сделать параметром типа…