第一阶段.模块二:学习笔记-TypeSrcipt的高阶特性二

上一篇:第一阶段.模块二:学习笔记-TypeSrcipt的高阶特性一

没有完成,还在完成中.......

ts 中的高阶类型(2)

1-this 类型

2-索引类型
2-1 索引类型查询操作符-->keyof

keyof 连接的是一个类型,返回一个由这个类型所有属性名组成的联合类型

interface info {
  name: string
  age: number
}
// 定义变量,变量类型是上面的接口类型
let myest: keyof info //变量类型let myest: "name" | "age"
// 为变量赋值
myest = 'name'
myest = 'age'
myest = 'sex'// 不能将类型“"sex"”分配给类型“"name" | "age"”。

2-2 索引访问操作符--> []
interface info {
  name: string
  age: number
}
// 定义变量,变量类型是上面的接口类型的name属性对应的类型
let myest: info['name'] // 类型是:let myest: "name" | "age"

myest = '1232'
myest = '456'
myest = 16 // 不能将类型“16”分配给类型“string”。

3-映射类型
3-1 基础

借助旧类型创建新类型
ts 内置的映射类型:Partial 是可选类型、Readonly 是只读类型
ts 内置的映射类型:Pick 是返回对象中的一部分数据、Rexord 是把对象中的每一个值变成其他值
Rexord 不是同态的 Partial、是可选类型、Readonly Pick 是同态的


interface Qwd {
  age: number
  name: string
  sex: string
}
// 定义映射类型
type ReadonlyType = {
  readonly [P in keyof T]: T[P] // 和for... in 类似 T是数组 P是里面的每一项item
}
// 定义一个新的类型
type ReadonlyTypeInfo1 = ReadonlyType
// 使用新的类型
let typeInfo11: ReadonlyTypeInfo1 = {
  age: 18,
  name: '小明',
  sex: '男'
  // sex:0 // 不能将类型“number”分配给类型“string”
}
// typeInfo11.age = 20 // Cannot assign to 'age' because it is a read-only property.

3-2 由映射类型进行推断


3-3 增加或移出特定修饰符--> + 或者 -


3-4keyof 和 映射类型在 2.9 的升级


3-5 元组和数组上的映射类型-->生成新的元组和数组

4-条件类型
4-1 基础


4-2 分布式条件类型


4-3 条件类型的类型推断-infer


4-4 TS 预定义条件类型


你可能感兴趣的:(第一阶段.模块二:学习笔记-TypeSrcipt的高阶特性二)