javascript - 是否可以使用 typescript 映射类型来创建接口(interface)的非函数属性类型?

标签 javascript typescript interface mapped-types

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

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
};

谢谢!

最佳答案

这来自 typescript 文档( https://www.typescriptlang.org/docs/handbook/advanced-types.html#conditional-types )并且有效:

type NonFunctionPropertyNames<T> = { [K in keyof T]: T[K] extends Function ? never : K }[keyof T];
type Data<T> = Pick<T, NonFunctionPropertyNames<T>>;

谢谢大家!

关于javascript - 是否可以使用 typescript 映射类型来创建接口(interface)的非函数属性类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59129805/

相关文章:

javascript - 在 VueAxios 中从 .env 设置 baseURL

javascript - setInterval 到 requestAnimationFrame

typescript - 我可以在泛型中使用命名 TS 类型,就像在 JS 中使用命名参数一样吗?

c# - C# 中的实现差异

java - 使Java父类不是接口(interface)的一部分

pointers - 获取通过接口(interface)获取的 var 上的指针

javascript - 在 Javascript 中,为什么要写 "var QueryStringToHash = function QueryStringToHash (query) { ... }"?

javascript - chrome 中 Canvas 填充颜色错误

node.js - TypeScript 编译 node-postgres 的问题

javascript - 执行多个异步操作在所有操作完成时收到通知( typescript )