所以我正在查看 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/