TS补充笔记
TS掘金笔记:https://juejin.cn/post/6872111128135073806 *为疑惑点
类型总结:
2.6.1Enum类型数字枚举设置初始值:
2.6.1.1给第一个枚举设置初始值,第二个枚举开始根据第一个枚举的初始值自动增长
2.6.1.2给第二个数字枚举设置初始值,第三个枚举开始根据第二个枚举的初始值自动增长,而第一个依然是0
2.6.1.3数字枚举除了支持从成员名称到成员值 的普通映射之外,它还支持从成员值到成员名称 的反向映射:
enum Direction {
NORTH,
SOUTH,
EAST,
WEST,
} let dirName = Direction[0]; // NORTH
let dirVal = Direction["NORTH"]; // 0
2.6.4Enum类型异构枚举:
2.6.4.1Enum类型异构枚举中的字符串枚举的下一个必须是数字枚举,否则报错
类型限制是变量名后进行类型限制,例num:Number(特例1.数组需要描述元素类型和数组,例arr:number[]2.{}不需要添加类型限制,{}则代表一个空对象,不可添加任何属性,但是可以使用原型链方法)
*2.12object/Object、2.13never
断言总结:
断言是1变量名前使用尖括号2.变量名 as 类型3非空断言和确定赋值断言在变量名后面(非空断言不可以过滤值为undefined的,例子是对有参数限制的变量进行过滤)
类型守卫总结:
4.1in:文章例子解析
4.2*typeof并不会只对"number"
, "string"
, "boolean"
或 "symbol"进行保护,尝试对数组也能够进行判断
4.3instanceof判断一个类是否属于另外一个类的子类
联合类型和类型别名总结:
5.2.3例子报错解析
交叉类型总结:
6.1.1尝试发现不管用type(类型别名)和interface是一样的,使用&和|的相同点为属性为并集,但是&为必填项,交叉类型所有的属性都要填,在都填满的状态下相同
6.1.2合并时有同名属性且类型为不同的基本数据类型,如有此情况则该属性的类型为nerve;如为非基础类型则可以成功合并
TS函数总结:
7.5可选参数和默认参数
// 可选参数
function createUserId(name: string, id: number, age?: number): string {
return name + id;
} // 默认参数
function createUserId(
name: string = "semlinker",
id: number,
age?: number
): string {
return name + id;
}
7.7*重载函数
TS接口总结:
10.2只读属性:赋值给其他变量也不行
let a: number[] = [1, 2, 3, 4];
let ro: ReadonlyArray<number> = a;
ro[0] = 12; // error!
ro.push(5); // error!
ro.length = 100; // error!
a = ro; // error! 赋值给其他变量也不行
10.3任意属性:例子解析 [ proName:string]
10.4.3extends:type(类型别名)扩展type或者interface使用&;interface扩展type或者interface使用extends
10.4.4implements:用法介绍
10.4.5接口重复定义:与类型别名不同,接口可以定义多次,会被自动合并为单个接口。
interface Point { x: number; }
interface Point { y: number; } const point: Point = { x: 1, y: 2 };
TS类总结*(使用不熟):
11.1类的属性与方法:成员和静态的区别
11.2私有变量:#不等于private
11.3访问器:通过 getter
和 setter
方法来实现数据的封装和有效性校验,防止出现异常数据。
11.4类的继承:
class Animal {
name: string; constructor(theName: string) {
this.name = theName;
} move(distanceInMeters: number = 0) {
console.log(`${this.name} moved ${distanceInMeters}m.`);
}
} class Snake extends Animal {
constructor(name: string) {
super(name); // 调用父类的构造函数
} move(distanceInMeters = 5) {
console.log("Slithering...");
super.move(distanceInMeters);
}
} let sam = new Snake("Sammy the Python"); //Slithering...
sam.move(); //"Sammy the Python moved 5m."
11.6类方法重载
TS泛型:
12.1泛型语法:泛型类似参数,不指定一个类型,而是由调用时传递;T、U可以被任何字母代替,传递给参数使用;调用时可以省略<>,参数类型会默认传递
interface GenericIdentityFn<T> {
(arg: T): T; //()意义不明
}
12.3
最新文章
- Hibernate入门详解
- salesforce 零基础学习(四十六)动态美观显示列表中记录的审批状态
- T-Sql编程基础
- ASP.NET MVC4中@model使用多个类型实例的方法
- git diff的用法
- css margin 参数
- js之dom_2
- python学习教程(九)sqlalchemy框架的modern映射
- Django 学习笔记(五)模板标签
- 笔记:MyBatis Mapper XML文件详解 - Result Maps
- xilinx的quick boot(1) ——flash的一些内容
- JAVA语言 第七周
- 【BZOJ1862】[ZJOI2006]游戏排名系统 (Splay)
- Jenkins + testNg + maven 项目持续集成
- 一个完整的Oracle建表的例子
- 网段;IP;广播地址;子网掩码;
- [AHOI2009]最小割
- oracle systemtap tracing
- 解题报告:51nod 加农炮
- windows中Appium-desktop配合夜神模拟器的使用