Typescript 从对象类型中排除函数类型

Typescript 从对象类型中排除函数类型,typescript,Typescript,在以下代码摘录中: interface User { name: string; age: number; bestFriend: User; getInfo: () => any; } type MyCustomType = { [key in keyof User]: User[key] }; 有没有办法只删除该接口的函数类型?我已经创建了MyCustomType类型,但没有找到删除函数类型的方法,例如getInfo 如何在MyCustomType类型中仅允许非

在以下代码摘录中:

interface User {
  name: string;
  age: number;
  bestFriend: User;
  getInfo: () => any;
}

type MyCustomType = {
  [key in keyof User]: User[key]
};
有没有办法只删除该接口的函数类型?我已经创建了MyCustomType类型,但没有找到删除函数类型的方法,例如getInfo

如何在MyCustomType类型中仅允许非函数类型


注意:用户等类型不应被过滤掉。

这是 Typescript手册高级类型页上的示例

条件类型与映射类型组合时特别有用:

类型FunctionPropertyNames={[K in keyof T]:T[K]扩展函数?K:never}[keyof T]; 类型FunctionProperties=Pick; 类型NonFunctionPropertyNames={[K in keyof T]:T[K]扩展函数?never:K}[keyof T]; 类型NonFunctionProperties=Pick; 接口部分{ id:编号; 名称:字符串; 分部分:第[]部分; updatePartnewName:字符串:void; } T40类型=FunctionPropertyNames;//更新部件 T41类型=非功能属性名称;//id |名称|子部分 T42类型=函数属性;//{updatePartnewName:string:void} T43类型=非功能属性;//{id:number,name:string,子部分:Part[]}
显示与未记录的类型不同,此类型当前不是内置的实用程序类型,因此您必须自己定义等效的非FunctionProperties。

这是 Typescript手册高级类型页上的示例

条件类型与映射类型组合时特别有用:

类型FunctionPropertyNames={[K in keyof T]:T[K]扩展函数?K:never}[keyof T]; 类型FunctionProperties=Pick; 类型NonFunctionPropertyNames={[K in keyof T]:T[K]扩展函数?never:K}[keyof T]; 类型NonFunctionProperties=Pick; 接口部分{ id:编号; 名称:字符串; 分部分:第[]部分; updatePartnewName:字符串:void; } T40类型=FunctionPropertyNames;//更新部件 T41类型=非功能属性名称;//id |名称|子部分 T42类型=函数属性;//{updatePartnewName:string:void} T43类型=非功能属性;//{id:number,name:string,子部分:Part[]}
显示与未记录的类型不同,此类型当前不是内置的实用程序类型,因此您必须自己定义等效的非FunctionProperties。

以下是Jeff综合答案的简化版本和

界面用户{ 名称:字符串; 年龄:人数; 好友:用户; getInfo:=>任何 } //不要太担心理解这一点 //直到您准备好使用高级打字脚本。 类型FunctionPropertyNames={ [K in keyof T]:T[K]扩展函数?K:从不 }[keyof T]; 类型MyCustomType=省略; 结果:


下面是Jeff综合答案的简化版本和

界面用户{ 名称:字符串; 年龄:人数; 好友:用户; getInfo:=>任何 } //不要太担心理解这一点 //直到您准备好使用高级打字脚本。 类型FunctionPropertyNames={ [K in keyof T]:T[K]扩展函数?K:从不 }[keyof T]; 类型MyCustomType=省略; 结果: