TS 中 in keyof 的用法?

下面这一段 TS 代码是什么意思,如果我把 T 传入 Animal 类型,Simplify 的类型是什么样子的?仍然是跟 Animal 一样的类型吗?

interface Animal {
  name: string;
  age: number;
}
type Simplify<T> = {
  [P in keyof T]: T[P];
};
阅读 1.6k
2 个回答

image.png
第7行的代码,in keyof就相当是for in循环,依次取出泛型T里面的键名,并根据键名取对应的值类型,所以这就是一个通用的类型复制

keyof类似于js中的Object.keys,所以keyof Animal等于'name'|'age'这样的联合类型,in就相当于遍历集合中的每一个,所以最终Simplify等于Animal

推荐问题
logo
Microsoft
子站问答
访问
宣传栏