通用函数和推断Typescript中的泛型键

时间:2017-01-18 08:07:06

标签: function generics typescript keyof

我试图从以下函数中删除第二个泛型,因为(恕我直言)应该可以推断出K extends keyof T

const normalizeToProps = <T, K extends keyof T>(...props:K[]) => (list:T[]):{[id:string]:T} => list.reduce(
  (map, item) => {
    const identifier = castArray(get<T, T[K]|T[K][]>(item, props)).join('');
    map[identifier] = item;
    return map;
  },
  {}
);

该功能对我的问题不重要。这都是签名<T, K extends keyof T>的第一部分。我宁愿只写<T>。因为那样调用函数会更容易。

我已经定义了一个我想要的接口,但是如何添加实现呢?

interface NormalizerFactory<T extends {}> {
  <K extends keyof T>(...props:K[]):(list:T[]) => {[id:string]:T};
}

1 个答案:

答案 0 :(得分:0)

您可以将var userInfo = response.Notification.Request.Content.UserInfo; if (userInfo != null) { var value = userInfo.ValueForKey(mystring); if (userInfo.ContainsKey(new NSString(Constants.PushNotificationInfoKeys. NOTIFICATION_TYPE))) { //Do something here } Console.WriteLine("Value :" + value); } 替换为K来删除第二个通用,如下所示:

keyof T