typeScript笔记 --- 高级类型
程序员文章站
2022-07-12 15:42:11
...
映射类型
interface Obj {
a: string;
b: number;
c: boolean;
}
同态类型 只能映射存在的
type ReadonlyObj = Readonly<Obj> // 只读
type PartialObj = Partial<Obj> // 接口所有的属性变成可选的
type PickObj = Pick<obj,'a'|'b'> // 要抽取的接口的key
非同态类型 开定义新的属性
type RecordObj = Record<'x' | 'y', Obj> //第一个参数是:要定义的新已知类型的属性,第二个参数是已有的
条件类型
// T extends U ? X : Y;
type TypeName<T> =
T extends string ? "string" :
T extends number ? "number" :
T extends boolean ? "boolean" :
T extends undefined ? "undefined" :
T extends Funtion ? "function" :
"object"
type T1 = TypeName<string>
type T2 = TypeName<string[]>
// (A | B) extends U ? X : Y
type T3 = TypeName<string | string[]>
type Diff<T, U> = T extends U ? never : T;
type T4 = Diff<"a" | "b" | "c", "a" | "c">