ts基本语法

127 阅读3分钟

简介

ts 没有扩展 js 的内容,只是用来类型检测! ts 最终是需要ts解析器(npm i -g typescript)解析成js才能运行的,而这个解析器是用node写的,所有必须先装NodeJS。 详细教程可以直接去TypeScript入门教程查看。

JavaScript 是一门解释型语言,没有编译阶段,是动态类型 TypeScript 在运行前需要编译为 JavaScript,在编译阶段就会进行类型检查,是静态类型 它们都是弱类型

编译执行.ts

编译.ts

image.png

就可以直接编译你的 .ts 文件到 .js

image.png

就会生成对饮的 .js 文件,然后直接使用node命令执行即可

image.png

编译执行.ts

如果想一步到位实现编译+执行的话,使用 ts-node

image.png

tsconfig.json

image.png

就会生成 tsconfig.json ,可以根据项目需要对其进行修改配置你想要的 ts 提示

类型

默认情况下 null 和 undefined 是所有类型的子类型

简单基础类型

image.png

联合类型

image.png

数组

image.png

元组

image.png

枚举

image.png

Direction.Up 的值为 1, Down 为 2, Left 为 3, Right 为 4(也可以指定为指定的字符串值)。

类型推论

image.png

类型断言

告诉ts编译器:“我知道我在干什么,我能确定我现在的这个变量是什么类型”。ts 会假设你已经进行了类型的检查。

image.png

类型别名

image.png

接口(interface)

image.png

类实现接口

可以使用class MyClass implements MyInterface 让某个类实现某个接口

image.png

接口的继承

image.png

属性声明

image.png

静态成员

image.png

存取器

image.png

抽象类

抽象类不能用来创建对象,就是专门用来被继承的类

image.png

单例案例

image.png

函数

函数类型

JavaScript 中有两种常见定义函数的方式——函数声明(Function Declaration)和函数表达式(Function Expression)。
一个函数有输入和输出,要在 TypeScript 中对其进行约束,需要把输入和输出都考虑到。

image.png

注意:TypeScript 中的 => 用来表示函数定义,左边是输入类型,用括号括起来,右边是输出类型。跟 ES6 中的 => 箭头函数还是不同的,不要混淆

可选参数

image.png

默认参数

image.png

剩余参数

image.png

函数重载 JavaScript本身是个动态语言。 JavaScript里函数根据传入不同的参数而返回不同类型的数据是很常见的。这怎么在类型系统里表示呢?方法是为同一个函数提供多个函数类型定义来进行函数重载,编译器会根据这个列表去处理函数的调用,重载的函数在调用的时候会进行正确的类型检查。

image.png

泛型

泛型函数

image.png

箭头函数泛型

image.png

泛型接口

image.png

泛型类

image.png

ts 中的 this

默认指向

js中函数的this指向
ts 中默认情况下函数中的 this 是 any 类型(ts 不能提示任何属性和方法,也就是类型系统没用了…所以我们一般都尽量不使用 any 类型)

image.png

官方给出的解决方案是:给编译器(tsconfig.json文件)设置 noImplicitThis: true

image.png

设置this指向

我们也可以强行设置 this 的指向,比如:

image.png

ts 中函数的第一个参数是用来设置 this 类型约束的(这是一个假参数,没有实际的运行作用,只是用来给 ts 检测使用的)

image.png

装饰器

尽可能不改变类结构的情况下,扩展其功能,可以被附加到类声明、属性、方法、参数或访问符上。

image.png