Utility Type Some utility types return a type
1, type Pick<T,K extends keyof T> = {[P in K]: T[P]}
Keyof T: take out all the key in T, into a joint type, such as {name: string, age: number} = > name | age extends: Must be a subset of the joint type, only the name, age or the name | age
2, Type Partial = {[P in keyof T]? : T[P] }; In: can be interpreted as traversal