打字稿:T的对象,但值是谓词

时间:2015-04-22 16:10:29

标签: typescript

用于以下功能(另请参阅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;

但我不知道该怎么做钥匙。

2 个答案:

答案 0 :(得分:2)

没有办法在TypeScript类型系统中表示这一点。

答案 1 :(得分:0)

这似乎更接近于部分类型安全的解决方案:

interface Pred2<T> {
    (x: any, y: T): boolean
}
interface ObjPred2<T> {
    [index: string]: Pred2<T>;
}
where<T>(spec: ObjPred2<T>, testObj: T): boolean;