TypeScript

32 阅读2分钟

是什么

ts是添加了静态类型系统的js,是一种强类型的静态编程语言。

  • 强类型:变量的类型在编译时必须明确指定,并且在操作变量时必须遵守严格的类型规则,不允许进行类型转换。如果存在类型不匹配的情况,编译器会报错并阻止代码的进一步执行。
  • 静态:在编译时确定变量类型,区别于动态类型语言在运行时确定变量类型,使得开发人员能够更早地发现错误。运行时指的是代码执行到那一句时。我之前理解的编译时指的是打包的时候,运行时指的是代码跑起来的时候(大错特错啊..)

特点

  • ts不能直接在浏览器或node端运行,需要编译成js语言。

为什么需要使用ts

  • 更早地检测出错误,因为它是静态语言,在编译时就会确定变量类型,而不是等到代码执行到那一块时才确认。
  • 代码可读性高。
  • 代码可维护性更高。
  • 代码可复用性高。

安装与使用

  • 通过npm/cnpm安装,可以在全局安装(-g),也可以在开发环境安装(-D)。
  • 将ts文件编译成js文件:tsc name.ts / npx tsc name.ts。如果ts不是在全局安装的,不能执行tsc命令,此时可以通过npx执行,它可以让我们执行一些不需要在全局模块中安装的命令或脚本工具。它会先在项目的node_modules中的.bin目录中找相应命令,找不到再去全局中找,找不到会自己下载到全局。(npx是npm自带的)
  • npx tsc --init,创建一个tsconfig.json文件。它里面有很多配置。比如编译时的一些配置、target:将js编译成哪个版本的es...,默认是es3,module:要生成的js代码要使用哪个模块化的协议,默认是cjs。

基础概念

  • 基础类型:数字、字符串、布尔值
  • 复杂类型:数组、对象
  • 对象类型:接口interface、类型别名type
  • 类型推断:根据初始化的值推断出变量的类型
  • 类型断言:通过as手动声明类型
  • 泛型generic:泛型对象类型、泛型函数、泛型类
  • 特殊类型:void、any、unknown、never