TypeScript
TypeScript 是由 Microsoft 开发和维护的开源编程语言。它是 JavaScript 的一种静态类型超集,这意味着它在 JavaScript 的基础上添加了静态类型检查和其他功能,同时仍然与 JavaScript 代码兼容。 TypeScript 旨在帮助开发人员编写更健壮和易维护的代码,特别是针对更大更复杂的应用程序。
学习资源
- 深入理解 TypeScript
- TypeScript 入门教程
- TypeScript 中文网 · TypeScript —— JavaScript的超集
- TypeScript Handbook(中文版)
- TypeScript 从零实现 axios
- TypeScript Deep Dive 中文版
- TypeScript 类型体操姿势合集
- TypeScript 中文文档_入门进阶必备
- TypeScript 中文手册
JavaScript 的数据类型分为两种:原始数据类型(Primitive data types)和对象类型(Object types)。
原始数据类型包括:布尔值、数值、字符串、null、undefined 以及 ES6 中的新类型 Symbol 和 ES10 中的新类型 BigInt。
变量申明
基本类型
let pageNo: number = 1
let name: string = 'spacexcode'
let isActive: boolean = false
let arr: number[] = [1, 2, 3]
let arr2: Array<number> = [1, 2, 3] // 泛型数组
let config: object = {}
let attr: undefined = undefined;
let data: null = null;
类型补充
- 枚举
Enum
使用枚举类型为某个变量可能有的所有值取个语义化的别名,方便取用
enum Fruit {
APPLE = '苹果',
ORANGE = '橘子',
BANNER = '香蕉',
}
- 元祖
Tuple
允许数组各元素的类型不必相同。
let data: [string, number] = ['spacexcode', 4];
- 任意值
Any
当一个值不确定类型,泛指任何类型
let data: any = "spacexcode";
data = 1;
data = false;
- 空值
void
通常用于函数,表示没有返回值。
function save(): void {
console.log("success");
}
- 接口
interface
在面向对象语言中,接口(Interfaces)是一个很重要的概念,它是对行为的抽象,而具体如何行动需要由类(classes)去实现(implement)。
TypeScript 中的接口是一个非常灵活的概念,除了可用于对类的一部分行为进行抽象以外,也常用于对「对象的形状(Shape)」进行描述。
interface Person {
name: string;
age: number;
sex?: string;
readonly birth: Date;
}
可选与只读: ?
表示可选参, readonly
表示只读
const P1 = {
name: "Timfan",
age: 24,
sex: "Male",
birth: new Date()
}
P1.birth = new Date(1991, 2, 4) // error
P2 = {
name: "Fants",
age: 28,
birth: new Date(2020, 3, 22)
} // right
泛型
泛型(Generics)是指在定义函数、接口或类的时候,不预先指定具体的类型,而在使用的时候再指定类型的一种特性。
常见于当函数中输出的类型和输入的要求一致时,而输入参数的类型又不能确定时。
语法 <T>(arg:T):T
其中 T
为自定义变量
const hello : string = "Hello vue!"
function say<T>(arg: T): T {
return arg;
}
console.log(say(hello)) // Hello vue!
泛型约束
待完善。。。
交叉类型
待完善。。。
联合类型
待完善。。。
函数重载
待完善。。。