在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
微软作为编译器狂魔一直有一个心病,就是改良JavaScript这种语法超级烂又很多人用的编程语言,于是TypeScript诞生了 先做个对比吧:
下面来把ts的特点逐一介绍: 1.类型 常见的ts类型:string、number、boolean、undefined、null、void、any、enum、Array、object、Never ts引入了类型的限制 java在声明一个变量的时候大概是这样的: int num;
而为了更贴近js,ts声明变量的写法变成: let num:number; 如果不加冒号声明就自动判定为any类型 2.枚举类型 enum枚举类型,是一种自己定义的类型: enum Gender { male=1, female=2 } let gender:Gender; //如果想定义为male gender = Gender.male //或者直接为 1 3.泛型 <T>泛型,其实就是制定内部东西的类型 let arr1:Array<number|string>; let arr2:Array<number>; arr1 = [1,2,3,'sadsd']; arr2 = [2,4,6,8] ps: 其他数组类型写法 let arr:string[]; let arr2:[string, number, boolean] //元组 arr = ['123', '456']; // 只能是字符串 arr2 = ['123', 123, true] // 一定要按顺序和个数严格对应类型声明
4.预定义属性的类 enum Gender{male=1,female=2} class Person { age:number; gender:Gender; constructor(age:number,gender:Gender) { this.age = age; this.gender = gender } eat(str) { console.log('我吃' + str) } } Person的属性需要在constructor外先做定义,而且定义了之后不允许像js那种装饰者模式那样再添加新的属性: let person = new Person(18, 1) person.height = 180 //编译报错,说person没有height这个类型 至于extends和es6没什么区别,接下来要说的是implements 5.接口/实现 implements接口(实现)是强制一个class必须要implements的所有属性和方法 enum Gender{male=1,female=2} class Person { constructor(age:number,gender:Gender) { this.age = age; this.gender = gender } age:number; gender:Gender; eat(str) { console.log('我吃' + str) } } //Adult继承字Person class Adult extends Person { constructor(age:number, gender:Gender) { super(age,gender) this.age = 1 } earnMoney(){ console.log('我赚钱') } } //Hero实现Adult,就必须手动加齐Adult自己新加的属性和方法和Adult继承自Person的属性和方法 class Hero implements Adult { age:number; gender:Gender; constructor() { this.age = Infinity this.gender = Gender.male } earnMoney() { console.log('我超级赚钱') } eat(){ console.log('我超级吃东西') } } 6. 默认参数和可选参数 function test(name: string = '哈哈', age ?:number) { if (age) { return name } return name + age; } test() 7. 类型断言 let age:any = '555'; (<string>age).substr(0, 2) (age as string).substr(0, 2)
|
请发表评论