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
子站问答
访问
宣传栏