这是我参与「第五届青训营 」伴学笔记创作活动的第 5 天
类型
-
或:|
-
基本类型:number,string,boolean,void,null,undefine,any
-
object
-
列表:Array<string|number>,string[]
-
元组:[number,string,string],数目与类型相对应
-
断言:(< string >a) 或 (a as string)
-
类型别名 type
-
接口:interface(定义约束)
-
可选参数: a?:string
-
默认参数: a:string = ""
-
索引签名:[a:string]:number(属性名为字符串类型,属性值为number)
-
枚举:enum
类
- 类的修饰符:public,protected,private,readonly
- get,set(访问器) private _fullName:string; get fullName():string { return _fullName } set fullName(name:string){ this._fullName = name }
- 抽象类:abstract(既可以定义约束,也可以有具体实现)
- implement:将接口继承到类,且必须重写接口
泛型
- 基本:表示
- 泛型约束
- 泛型接口(默认值为类型)
- 类型参数约束(keyof)
补充类型
-
unknow类型
- 任何类型可以赋值给unknow类型;
- 不能将unknow类型赋值给任何类型;
- nuknow与其他类型交集都是其他类型: string & unkow = string
- 除了any外,unknown与其他类型联合都是unknow类型:string | unknow = unknow
- never类型都是unknow类型的子类
-
map类型(与js相同)
- map.set(键,值):
- map.get(键):获取值
- map.has(键):是否含有某个键所对应的值
- map.size:数量
- map.delete(键):删除
- map.keys():所有键
- map.values():所有值
- map.entries():所有键和值[键1,值1],[键2,值2] for of
-
索引类型
使用一个索引访问类型来查询另一个类型上的特定属性 格式: [ key]不会返回null/undefined/never类型
-
条件类型 T extends U ? :
- type MyType = T extends string ?: string : any
- type res = MyType // string
- type res = MyType // any
-
分布式条件类型
-
从T中剔除可以赋值给U的类型。 Exclude type res = Exclude<string | number | boolean, number>
-
提取T中可以赋值给U的类型。 Extract type res = Extract<string | number | boolean, number>
-
从T中剔除null和undefined。 NonNullable type res = NonNullable<string | boolean | null | undefined>
-
获取函数返回值类型。 ReturnType type res = ReturnType<()=>number>
-
获取一个类的构造函数参数组成的元组类型。 ConstructorParameters
-
获得函数的参数类型组成的元组类型。 Parameters
-
装饰器:
-
类装饰器:接受一个参数,被修饰类的构造函数
-
方法装饰器:接受三个参数,
第一个为:普通方法是原型对象,静态方法是类本身 第二个为方法名, 第三个为方法的属性描述(value,writable,enumerable,configurable), -
访问器装饰器:(也算是一种方法装饰器)
一:原型对象 二:方法名 三:稍稍不同 -
属性装饰器:接受两个参数
一:普通方法是原型对象,静态方法是类本身 二:属性名 -
参数装饰器:三个参数
一:普通方法是原型对象,静态方法是类本身 二: 所在方法的方法名 三:在参数列表中的索引 -
装饰器工厂:返回函数的类型是装饰器