ts的好处:
代码出现类型不对或者其他错误后能立刻显示出来。在写对象的方法的时候能自动补全等等........
Ts的安装:
需要安装node 运行环境和ts,安装好后通过tsc demo.ts 来对ts文件进行编译,编译出一个js文件后通过 node demo.js 来运行得出结果。当然这个流程是已经比较复杂,可以安装npm install -g ts-node 来辅助编译。 ts-node demo.ts
TS基础语法
静态类型比动态类型的好处在于剥夺它的”灵活性”,使它更具有规范性。
- 静态类型
基础类型:let teacherName: number = 12 ; let teacherName: string = ‘我是字符串’ ;
let teacherName: number | string = ‘现在是字符串以后有可能是数值类型’
对象类型:let teacherName: { name: string,age: number } = { name: ‘张三’, sex: 15};
数组类型:let teacherName: number[] = [1,2,3];let teacherName: ( number | string )[] = [1,’2’] ; let teacherName: { name: string,age: number }[] = [{name: ‘张三’,age: 15}] ,如果觉得数组对象的类型定义比较麻烦还可以用类型别名的方式(type alias) , type User = { name: string,age: number }; let teacherName: User[] = [{name: ‘张三’,age: 15}]
函数类型:let teacherName: () => number = ()=>{ return 32 }。
- 类型推断及注解
类型推断:由ts 进行数据类型的推算得出类型(函数的形参不能给推算出)
类型注解:由程序员来定义变量的类型
三、函数类型
函数结构: let teacherName = firsName(1,”2”)
Function firsName (i: number, s: string ): number { return ‘这里需要返回number 类型’ }
Void类型: function firsName(): void ; 代表没有返回值
Never类型: 用于抛出错误,它永远无法让那个函数体执行完
- interface 接口
在对象类型重复性比较高的时候,可以定义接口来使用。例如:interface User { name: string ,age: number } function A ( user: User ): { name: string, age: number } {} ,看到这样就觉得跟类型别名有点像,区别不大。当有一个类型不明确是否可有可无的情况下 ,可以在接口 类型里面写 age?: number ,这样就不会报错,还可以写为[propName: string] :any,意思是允许任意添加属性个数
注意:1、当函数通过字面量的形式传递对象值的时候,ts就会进行强效验,接口里面不能写 age?: number,如果需要就只能写 [propName: string] :any。2、接口可以继承方法,在原来已有的类型方法上进行继承。Interface Teacher extends User{}