Partail实际上是基于映射类型实现的
1、keyof T既表示keyof Props 表示获取Props的所有键 既 'a' | 'b' | 'c'
2、在[]后面加?表示将这些属性变为可选的,以此实现Partail的功能
3、:后面的T[P]表示获取T中每个键对应的类型比如a是number类型 b是string类型
type aaa<T> = {
[P in keyof T]?: T[P]
}
type Props = {
a: number,
b: string
}
type PartialProps = aaa<Props>
let obj: PartialProps = {}