[英]How to define generic function rejecting key from object in Typescript?
我正在尝试定义一个实用程序函数来清理特定键的对象。
/**
* 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 }
的函数参数。 休息类型只能从对象类型创建。
这是打字稿传播的一个已知的限制,有多个问题上这里是最近的一个。
一种可能的解决方法是使用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;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.