下面这一段 TS 代码是什么意思,如果我把 T 传入 Animal
类型,Simplify 的类型是什么样子的?仍然是跟 Animal
一样的类型吗?
interface Animal {
name: string;
age: number;
}
type Simplify<T> = {
[P in keyof T]: T[P];
};
下面这一段 TS 代码是什么意思,如果我把 T 传入 Animal
类型,Simplify 的类型是什么样子的?仍然是跟 Animal
一样的类型吗?
interface Animal {
name: string;
age: number;
}
type Simplify<T> = {
[P in keyof T]: T[P];
};
keyof
类似于js
中的Object.keys
,所以keyof Animal
等于'name'|'age'
这样的联合类型,in
就相当于遍历集合中的每一个,所以最终Simplify
等于Animal
8 回答4.7k 阅读✓ 已解决
6 回答3.5k 阅读✓ 已解决
6 回答2.4k 阅读
5 回答6.4k 阅读✓ 已解决
3 回答2.5k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
3 回答2.5k 阅读✓ 已解决
第7行的代码,in keyof就相当是for in循环,依次取出泛型T里面的键名,并根据键名取对应的值类型,所以这就是一个通用的类型复制