Typescript 是由微软开发的开源、跨平台的编程语言。
Typescript 需要编译成Javascript代码,才能在浏览器中运行。
使用 npm 安装 typescript
> npm install -g typescript
查看版本
> tsc -V Version 4.4.2
编译TS文件
> tsc filename.ts
引入其他ts文件
import ./other.ts
初始化TS编译配置文件
tsc --init
Typescript数据类型
布尔类型 boolean
let isOk: boolean = true | false;
数字 number
Typescript 和 Javascript 一样,所有数字都是浮点类型
let age: number = 10; // 十进制 let age: number = 0b1010; // 二进制 let age: number = 0o12; // 八进制 let age: number = 0xa; // 十六进制
字符串 string
可以使用双引号或单引号表示字符串
let name: string = 'miselehe';
数组 array
格式: let 变量名: 数据类型[] = [v1,v2,...]
let arr1: string[] = ["1","a"]; let arr2: Array<number> = [1,2];
元组
定义后,在使用时值的数据类型、顺序以及数量是不可变的。
let arr3: [string, number] = ['mslh', 20];
枚举 enum
枚举内每个元素都是有编号的,从0开始,依次递增+1。
// 定义枚举 enum Color { red, green, blue } // 创建枚举类型变量 let color: Color = Color.red; console.log(color); // 0 // 使用枚举类型 console.log(Color.green) // 1 console.log(Color[2]); // blue
任何类型 any
表示值可以是任何类型
// 声明时 值为字符串类型 let str: any = 'aaa'; // 重新赋值数字类型 str = 100;
void 类型
通常放在函数定义后,表示此函数没有返回值。
// 定义方法 function hello():void { ... }
object 类型
let userInfo: object = {};
联合类型
function hell(a:string|number) { ... }
类型断言
let x: string | number; let str: string = x as string; let num: number = <number>x;
类型推断
根据声明时的值判断类型
let a = 100; // 类型推断是 number a = '100' //报错 let b; //类型推断是 any 类型
接口 interface
是对对象的状态(属性)和行为(方法)的抽象。
// 定义接口 interface IPerson { readonly id: number // 只读属性 firstName: string lastName: string hobby?: Array<string> // 可选属性 } // 创建某接口类型的对象 const person: IPerson { id: 11, firstName: "miselehe", lastName: "com", }; console.log(person.id);
接口可以继承其他接口,多个使用逗号分隔
// 实现多个接口 interface ISing { sing() } // 接口继承 interface SuperUser extends IPerson,ISing {}
类 class
// 创建类定义 class User{ firstName: string lastName: string // 构造函数,lastName默认值为"com" constructor (f: string, l: string="com") { this.firstName = f; this.lastName = l; } // 方法 sayHi(): string { return "Hi "; } } // 创建类实例 const user = new User("miselehe", "com");
类可以实现接口,多个用逗号分隔
// 定义接口 interface IPerson { firstName: string lastName: string sayHi(): string } // 实现多个接口 interface ISing { sing() } class User2 implements IPerson,ISing { firstName: string lastName: string constructor (f, l) { firstName = f; lastName = l; } sayHi(): string { return "Hi "; } sing() { return "sing!" } }
修饰符
public 公开的, 默认修饰符,任何地方可以调用
private 私有的,子类中也不可访问
protected 受保护的,但子类中可以访问