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

  常用于注释函数没有返回(无限循环)

posted @ 2023-12-03 20:37  花都八达鸟  阅读(38)  评论(0)    收藏  举报