TypeScript简介
TypeScript 简称TS,是JavaScript的超集,JavaScript有的TS都可以做到,而JS没有的,TS也有,在语言层面上,对一些语法进行拓展。比如新增了枚举(Enum)这种在一些语言中常见的数据类型,对类(Class)实现了一些ES6标准中没有确定的语法标准等等,适用于任何规模的项目。 TypeScript可以和 JavaScript 共存,这意味着 JavaScript 项目能够渐进式的迁移到 TypeScript。
TS类型系统
Ts相对于JS最大的优势,就是多了强大的类型系统,可以代码捕获运行之前的错误,有利于大型项目的开发,和维护。
//布尔类型
let flag: boolean = true;
//数字类型
let num: number = 123;
// Array类型
let arr: Array<string> = []; // 第一种写法 跟react的语法有冲突,容易被错误识别
let arr1: string[] = ['a','b','c']; // 第二种写法 推荐使用第种写法
//Null / Undefined 类型
let n: null = null;
let u: undefined = undefined;
//Object 类型
let obj: object = {
msg: 'hello world',
num: 18
}
//Any 类型 也就是可以赋值任何类型
let isAny: any = 666;
isAny = "str"; // ok
isAny = false; // ok
isAny = []; // ok
isAny = null; // ok
// Unknown类型 和any类型类似
let value: unknown;
value = Math.random; // OK
value = new TypeError(); // OK
value = Symbol("u"); // OK
//Void 类型
//Void 类型和 Any 类型相反,他表示没有任何类型。
//当一个函数没有返回值的时候,就需要使用 Void 类型。
function fn(): void {
console.log('666')
}
// 函数名 + 括号 + ( : void ) ==> 代表函数的返回值
"use strict";
let voidType: void = undefined;
let value1: unknown = value; // OK
let value2: any = value; // OK
//Never 类型
//never 类型表示的是那些永不存在的值的类型。
//never 类型是那些总会爆出异常或根本不会有返回值的函数的返回值类型。
function error(): never {
throw new Error('handle error')
}
function while(): never {
while(true) {
console.log(1)
}
}
元组类型
数组一般都是由同一种类型组成;
但有时我们需要在单个变量中存储不同类型的值,这就是元组
let tupleType: [string, number, boolean];
tupleType = ['str', 666, true];
// error
tupleType = [true, "str"];
// Type 'true' is not assignable to type 'string'.
// Type 'semlinker' is not assignable to type 'number'.
Enum枚举
*枚举 enum 讲一组可能出现的值,
*使用枚举我们可以定义一些带名字的常量。
*使用枚举可以清晰地表达意图或创建一组有区别的用例。
*TypeScript 支持数字的和基于字符串的枚举。
数字枚举
//数字类型
enum Direction {
NORTH, // NORTH = 0,
SOUTH, // SOUTH = 1
EAST, // EAST = 2
WEST, // WEST = 3
}
let dir: Direction = Direction.NORTH;
// 枚举之反向映射
let dirName = Direction[0]; // NORTH
let dirVal = Direction["NORTH"]; // 0
默认情况NORTH的值是0,其他成员默认递增,如果第一项设置默认值,则从默认值开始递增
字符串枚举
enum Direction {
NORTH = "NORTH",
SOUTH = "SOUTH",
EAST = "EAST",
WEST = "WEST",
}
//给所有的变量添加一个初始的字符串默认值
异结构枚举
enum Enum {
A, // 0
B, // 1
C = "C",
D = "D",
E = 8,
F, // 9
}
console.log(Enum.A) //输出:0
console.log(Enum[0]) // 输出:A