首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否可以使用typescript映射类型来创建接口的非函数属性的类型?

是否可以使用typescript映射类型来创建接口的非函数属性的类型?
EN

Stack Overflow用户
提问于 2019-12-02 04:45:10
回答 2查看 432关注 0票数 2

所以我在看Typescript的映射类型。是否可以创建一个接口来包装另一个类型,从而从原始类型中删除函数?例如:

代码语言:javascript
复制
interface Person{
name: string,
age: number,
speak(): void,
}

type Data<T> = ?

const dataPerson: Data<Person> ={
name: "John",
age: 20
//Speak removed because it is a function
};

谢谢!

EN

回答 2

Stack Overflow用户

发布于 2019-12-02 05:52:59

这是来自typescript文档(https://www.typescriptlang.org/docs/handbook/advanced-types.html#conditional-types)和作品:

代码语言:javascript
复制
type NonFunctionPropertyNames<T> = { [K in keyof T]: T[K] extends Function ? never : K }[keyof T];
type Data<T> = Pick<T, NonFunctionPropertyNames<T>>;

谢谢大家!

票数 3
EN

Stack Overflow用户

发布于 2019-12-02 05:30:57

代码语言:javascript
复制
  { [K in T]: T[K] extends Function ? undefined : T[K] }

为此,您可以使用映射的条件类型。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59129805

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档