У меня есть функция с объявленным типом.Я планирую использовать частичную версию этой функции.Но мне нужно сначала объявить переменную для частичной версии.
Я могу скопировать подпись, пропустив первый параметр.
Пока он работает и выполняет проверки типов, я хотел бы автоматизировать это.
Вот как я хочу его использовать:
function myFunc(a: number, b: number): number {
return a + b
}
let partFunc: PartialFunc<typeof myFunc>
// later
partFunc = (b) => myFunc(42, b)
И я не знаю, возможно ли создать PartialFunc<Func>
универсальный.
Я пробовал этот подход
interface Func1<T1, TRes> {
(a: T1): TRes
}
interface Func2<T1, T2, TRes> {
(a: T1, b: T2): TRes
}
interface PartialFunc<TFunc extends Func2<T1, T2, TRes>, T1=any, T2=any, TRes=any> extends Func1<T2, TRes>{}
или то же самое с универсальными типами:
type F1<T1, TRes> = (a: T1) => TRes
type F2<T1, T2, TRes> = (a: T1, b: T2) => TRes
type PF<Func extends F2<T1, T2, TRes>, T1=any, T2=any, TRes=any> = F1<T2, TRes>
Но для этого все равно требуется указать все типы:
let partFunc: PF<typeof myFunc, number, number, number>
В противном случае у меня есть any
типы.
Несмотря на то, что это принудительно проверяет тип, например, он не принимает PF<typeof myFunc, number, number, string>
, я бы хотел избежать повторного ввода типов.
В основном я хочу сказать TS Принять подписьэтой функции и удалите первый параметр
Есть ли какое-либо решение для этого?
Контекст этой задачи - у меня есть приложение react-redux
, и я хочу связать параметр сХранить в действии диспетчер.