打字稿:T 的对象但值是谓词
Typescript: Object of T but value is Predicate
对于以下函数(另请参阅 http://ramdajs.com/docs/#where)
var spec2 = {x: function(val, obj) { return val + obj.y > 10; }};
R.where(spec2, {x: 2, y: 7}); //=> false
R.where(spec2, {x: 3, y: 8}); //=> true
我想为 object
T
具有谓词值的情况创建类型。
我在想我会做这样的事情:
where<T>(spec: {item: (val: any, testObj: T) => boolean}, testObj: T): boolean;
但我不确定如何处理密钥。
在 TypeScript 类型系统中无法表示这一点。
这似乎更接近于部分类型安全的解决方案:
interface Pred2<T> {
(x: any, y: T): boolean
}
interface ObjPred2<T> {
[index: string]: Pred2<T>;
}
where<T>(spec: ObjPred2<T>, testObj: T): boolean;
对于以下函数(另请参阅 http://ramdajs.com/docs/#where)
var spec2 = {x: function(val, obj) { return val + obj.y > 10; }};
R.where(spec2, {x: 2, y: 7}); //=> false
R.where(spec2, {x: 3, y: 8}); //=> true
我想为 object
T
具有谓词值的情况创建类型。
我在想我会做这样的事情:
where<T>(spec: {item: (val: any, testObj: T) => boolean}, testObj: T): boolean;
但我不确定如何处理密钥。
在 TypeScript 类型系统中无法表示这一点。
这似乎更接近于部分类型安全的解决方案:
interface Pred2<T> {
(x: any, y: T): boolean
}
interface ObjPred2<T> {
[index: string]: Pred2<T>;
}
where<T>(spec: ObjPred2<T>, testObj: T): boolean;