简介
ts 没有扩展 js 的内容,只是用来类型检测! ts 最终是需要ts解析器(npm i -g typescript)解析成js才能运行的,而这个解析器是用node写的,所有必须先装NodeJS。 详细教程可以直接去TypeScript入门教程查看。
JavaScript 是一门解释型语言,没有编译阶段,是动态类型 TypeScript 在运行前需要编译为 JavaScript,在编译阶段就会进行类型检查,是静态类型 它们都是弱类型
编译执行.ts
编译.ts
就可以直接编译你的 .ts 文件到 .js
就会生成对饮的 .js 文件,然后直接使用node命令执行即可
编译执行.ts
如果想一步到位实现编译+执行的话,使用 ts-node
tsconfig.json
就会生成 tsconfig.json ,可以根据项目需要对其进行修改配置你想要的 ts 提示
类型
默认情况下 null 和 undefined 是所有类型的子类型
简单基础类型
联合类型
数组
元组
枚举
Direction.Up 的值为 1, Down 为 2, Left 为 3, Right 为 4(也可以指定为指定的字符串值)。
类型推论
类型断言
告诉ts编译器:“我知道我在干什么,我能确定我现在的这个变量是什么类型”。ts 会假设你已经进行了类型的检查。
类型别名
接口(interface)
类实现接口
可以使用class MyClass implements MyInterface 让某个类实现某个接口
接口的继承
类
属性声明
静态成员
存取器
抽象类
抽象类不能用来创建对象,就是专门用来被继承的类
单例案例
函数
函数类型
JavaScript 中有两种常见定义函数的方式——函数声明(Function Declaration)和函数表达式(Function Expression)。
一个函数有输入和输出,要在 TypeScript 中对其进行约束,需要把输入和输出都考虑到。
注意:TypeScript 中的 => 用来表示函数定义,左边是输入类型,用括号括起来,右边是输出类型。跟 ES6 中的 => 箭头函数还是不同的,不要混淆
可选参数
默认参数
剩余参数
函数重载 JavaScript本身是个动态语言。 JavaScript里函数根据传入不同的参数而返回不同类型的数据是很常见的。这怎么在类型系统里表示呢?方法是为同一个函数提供多个函数类型定义来进行函数重载,编译器会根据这个列表去处理函数的调用,重载的函数在调用的时候会进行正确的类型检查。
泛型
泛型函数
箭头函数泛型
泛型接口
泛型类
ts 中的 this
默认指向
js中函数的this指向
ts 中默认情况下函数中的 this 是 any 类型(ts 不能提示任何属性和方法,也就是类型系统没用了…所以我们一般都尽量不使用 any 类型)
官方给出的解决方案是:给编译器(tsconfig.json文件)设置 noImplicitThis: true
设置this指向
我们也可以强行设置 this 的指向,比如:
ts 中函数的第一个参数是用来设置 this 类型约束的(这是一个假参数,没有实际的运行作用,只是用来给 ts 检测使用的)
装饰器
尽可能不改变类结构的情况下,扩展其功能,可以被附加到类声明、属性、方法、参数或访问符上。