我正在尝试定义一个实用程序函数来清理特定键的对象。
win.webContents.send('asynchronous-message', {'SAVED': 'File Saved'});
但是编译器抱怨/**
* 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 });
的函数参数。 只能从对象类型创建其他类型。
答案 0 :(得分:1)
这是Typescript中传播的已知限制,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;
}