使用拉姆达咖喱+;带有TypeScript的占位符结果为;类型';占位符';不可分配给类型';x';
我想将已知参数绑定到一个带有Ramda的回调,其余参数未指定:使用拉姆达咖喱+;带有TypeScript的占位符结果为;类型';占位符';不可分配给类型';x';,typescript,ramda.js,currying,parameterbinding,Typescript,Ramda.js,Currying,Parameterbinding,我想将已知参数绑定到一个带有Ramda的回调,其余参数未指定: import * as R from "ramda"; type Params = Partial<{ param1: number; param2: number; param3: number; }>; function getBoundCallback(params: Params) { const { param1, param2, param3 } = params;
import * as R from "ramda";
type Params = Partial<{
param1: number;
param2: number;
param3: number;
}>;
function getBoundCallback(params: Params) {
const { param1, param2, param3 } = params;
const callback = (p1: number, p2: number, p3: number) => {
// do something
};
return R.curry(callback)(
param1 || R.__,
param2 || R.__,
param3 || R.__
);
}
正确的方法是什么
我能想到的唯一解决办法是:
const callback = (
_p1: number | R.Placeholder,
_p2: number | R.Placeholder,
_p3: number | R.Placeholder
) => {
const p1 = _p1 as number;
const p2 = _p2 as number;
const p3 = _p3 as number;
// do something
};
这远远不是最优的
正确的方法是什么
我使用“types/npm-ramda#dist”
进行ramda类型声明
const callback = (
_p1: number | R.Placeholder,
_p2: number | R.Placeholder,
_p3: number | R.Placeholder
) => {
const p1 = _p1 as number;
const p2 = _p2 as number;
const p3 = _p3 as number;
// do something
};