代码之家  ›  专栏  ›  技术社区  ›  AbdulKareem

基于传递的字符串参数约束返回的对象属性

  •  0
  • AbdulKareem  · 技术社区  · 7 年前

    pluck 它返回 key:value 对象

    function pluck<T>(source:T,key:keyof T):Record<typeof key , T[typeof key]>{
        return {[key]:source[key]}
    }
    

    source key 关于类型定义。

    1 回复  |  直到 7 年前
        1
  •  1
  •   jcalz    7 年前

    key 都是 keyof T ,其中它应该是一个泛型类型 因此可以推断为 中的键 T键

    function pluck<T, K extends keyof T>(source: T, key: K): Record<K, T[K]> {
      return { [key]: source[key] } as Record<K, T[K]>; // see footnote*
    } 
    

    Record<K, T[K]> 可以更简洁地写成 Pick<T, K> :

    function pluck<T, K extends keyof T>(source: T, key: K): Pick<T,K> {
      return { [key]: source[key] } as Pick<T,K>; // see footnote*
    } 
    

    希望这有帮助;祝你好运

    *注意,由于 TypeScript bug 这(尽管已关闭)可能无法完全解决。