what is ts
比js更守规矩的语言:
静态类型,ts带有类型检查,声明式显示设置变量类型,编译时即可发现显示编程错误
但是,因为需要编译,所以需要将ts编译为js以便浏览器执行
使用tsc对ts文件进行编译,可使用tsc --init命令生成tsconfig.json文件,这个文件定义了TypeScript项目的编译选项。
target字段描述js规范,es2016支持了现在大多数的浏览器
rootdir指定源文件的目录
outdir指定编译后文件位置
removeComments生成js文件时删除ts中的注释
noUnusedLocals所有本地参数必须使用
noUnusedParameters设置函数所有参数必须被使用
noImplicitReturns设置函数必须显示返回
allowUnreachableCode设置是否有不可达代码
noEmitOnError设置为true,当ts文件有编译问题,就不生成js文件
noImplicitOverride提示隐式重写
编译并运行
tsc && node xxx.js
内置类型:
js: number string boolean null undefined object
extend: any unknown never enum tuple
数字类型可以每3个加下划线以示清晰
ts可以使用:类型名进行显示声明,也可以不加自动推断。如果没有在声明时赋值,类型暂定为any
ts可以使用?:表示一个参数是可选的,但尽量避免使用
数组:
js的数组可以是不同类型的元素组合
ts可以使用:类型名[] 指定数组类型
tuple声明固定长度与类型的数组,以:[unmber,string,...]方式声明,底层使用js数组实现
enum
设置相关常数列表, enum Size { Small = 1, Medium}
如果不使用const修饰enum,tsc编译后的代码会很冗长
函数
js的函数没有显示返回则会返回undefined
js的函数不会检查接受参数的多少
ts可以直接使用参数名 = 值,为参数设定默认值
对象
js中对象是动态的
ts的对象结构是静态的,可以在声明对象变量时同时声明对象结构:{id:number, name:string,retire:(date :Date) => void}
在对象属性前添加readonly 可以让该属性不可更改
ts使用type 对象名 = {}定义对象
union type
可以使用 | 声明多个类型的混合,但变量可使用的方法为这几个类型的共有的方法
可以使用typeof xxx === ’类型名‘锁定变量类型以使用相关方法
Intersection Types
type PersonAndEmployee = Person & Employee;
创建一个新类型,它同时包含多个类型的所有成员。
literal type
使用union type创建的数字或字符串类型,使得变量的值在指定范围内
optional chaining
对于是混合类型的变量,可以使用 ?. 访问其可能的属性或方法(在变量为null或undefined时不会报错)
空值合并运算符
??,用于提供默认值
instanceof
类于typeof,用于判断自定义类型
unknown
使用unknown比any好,编译器会强制要求类型检查
never
常用于注释函数没有返回(无限循环)

浙公网安备 33010602011771号