代码之家  ›  专栏  ›  技术社区  ›  T.Chmelevskij

如何在Typescript中定义拒绝对象键的泛型函数?

  •  1
  • T.Chmelevskij  · 技术社区  · 7 年前

    /**
     * Strip all the __typenames from the payload.
     */
    interface WithTypename {
      __typename?: string;
    };
    
    type Omit<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>;
    
    const omitTypename = <T extends WithTypename>({ __typename, ...rest }: T): Omit<T, '__typename'> => ({ ...rest });
    

    { __typename, ...rest } .

    1 回复  |  直到 7 年前
        1
  •  1
  •   Titian Cernicova-Dragomir    7 年前

    here 是最近的。

    一种可能的解决方法是使用 Object.assign

    /**
     * Strip all the __typenames from the payload.
     */
    interface WithTypename {
    __typename?: string;
    };
    
    type Omit<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>;
    
    const omitTypename = <T extends WithTypename>(o: T): Omit<T, '__typename'> => {
        let r = Object.assign({}, o);
        delete r.__typename;
        return r;
    }
    
    推荐文章