TS 总结
为什么要用TS
类型检测
:可以在编译阶段就发现大部分错误,这总比在运行时候出错好便于重构
:增加了代码的可读性和可维护性静态类型
- 静态类型检查可以做到early fail,编写的代码即使没有被执行到,但是发生类型不匹配的时候,语言在编译阶段(解释执行也一样),可以在运行前发现
- 静态类型对阅读代码是友好的,针对大型应用,方法很多,调用关系复杂,不可能每个函数都有人编写细致的文档,所以静态类型就是非常重要的提示和约束。此外TS还实现了类、接口、美剧、泛型,方法重载等语法糖,方便前端开发
数据类型
- 基础类型:
boolean 、number、string、null、 undefined、 Symbol
- 重点
undefined 和 null 类型的数据只能被赋值 undefined 和 null
, undefined 和 null 类型是所有类型的子类型void 空类型
any 类型
类型推断
Enum 枚举
-
enum Color{ red = 1, green = 2 } let c:Color = Color.green // 2 let colorName = Color[2] // green console.log(c,colorName) ```
-
Array 数组
元组类型
函数类型
泛型
-
是指在定义函数、接口或类的时候,不预先指定具体的类型,而在
使用的时候再指定类型的一种特性
-
重点
T(Type):类型变量
K(Key):表示对象中的键类型;
V(Value):表示对象中的值类型;
E(Element):表示元素类型。
-
使用原则
当你的函数、接口或类将处理多种数据类型时;
当函数、接口或类在多个地方使用该数据类型时。
对象与接口
继承
interface ILink {
description?: string;
id?: number;
url: string;
}
// 现在,IPost 类型的对象都将具有可选的属性 description、id、url和必填的属性 title 和body
interface IPost extends ILink {
title: string;
body: string;
}
声明合并
:如果定义了两个相同名字的函数、接口或类,那么它们会合并成一个类型
interface Alarm {
price: number;
}
interface Alarm {
weight: number;
}
// 相当于
interface Alarm {
price: number;
weight: number;
}