说说对Typescript中高级类型的理解
# 是什么
高级类型: 除基础类型(string,number 等)之外的类型应用
# 有哪些
- 交叉类型
- 联合类型
- 类型别名
- 类型索引
- 类型约束
- 映射类型
- 条件类型
# 交叉- 并
T & U
function extend<T , U>(first: T, second: U) : T & U {
let result: <T & U> = {}
for (let key in first) {
result[key] = first[key]
}
for (let key in second) {
if(!result.hasOwnProperty(key)) {
result[key] = second[key]
}
}
return result
}
# 联合类型 - 或
T | U;
function fn(str: string[] | string) {}
# 类型别名 - 新名字
type do = boolean | string
type Tree<T> = {
value: T
}
# 类型索引 - keyof
interface IType {
name: string;
age: number
}
type myType = keyof IType
type myType = 'name' | 'age'
# 类型约束 - extends
function getValue<T, K extends keyof T>(obj: T, key: K ){
return obj[key]
}
# 映射类型 - in
type Readonly<T> = {
readonly [P in keyof T]: T[P];
};
# 条件类型 - ?
T extends U ? X : Y
# 总结
在复杂场景下,需要使用高级类型的频率就越多
上次更新: 2021/12/19, 18:05:42