TypeScript入门|青训营

64 阅读3分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 5 天

目录

  • 什么是TypeScript
  • TypeScript的基本语法
    • 基础数据类型
    • 对象类型
    • 函数类型
    • 数组类型
    • 补充类型
  • TypeScript高级数据结构
    • 联合/交叉类型
    • 类型保护与守卫
    • 使用样例
  • 函数返回值类型
  • 工程应用

详细知识

什么是TypeScript?

动、静态类型,强、弱类型语言

JS是动态类型(编译之前执行,执行阶段才进行类型检验/匹配)
TS是静态类型(编译之后才会执行,编译阶段就会报错,Python也是静态类型)
它们都是弱类型语言(弱类型语言不同类型的数据可以进行类型转换,而强类型语言互相转换会出错)

TypeScript的特性?

静态类型

  • 可读性增强:基于语法解析TSDoc,ide增强
  • 可维护性增强:在编译阶段暴露大部分错误=>多人合作的大项目中有更好地稳定性和开发效率 JS的超集
  • 包含于兼容所有JS特性,支持共存
  • 支持渐进式引入与升级

基础数据类型

  • 字符串
  • 数字
  • bool
  • null
  • undefined image.png

对象类型

image.png

函数类型

可以通过interface定义变量 image.png

函数重载

方法重载在类中定义多个同名的方法,但是每一个同名的方法要求不同数据类型和不同参数。...一个或多个签名(函数体前面叫做签名)组合叫做函数重载,外部调用函数重载时,只能调用重载的签名,不能调用 调用使用的函数签名。调用函数重载时会根据传递的参数来判定调用的函数。如果只有一个函数体,只有实现签名配备的函数体,所有重载签名只有签名,没有配置函数体。—— TS中的方法重载,函数重载,构造器重载

image.png

数组类型

其实是一个扩展对象,常用类型+方括号表示和泛型表示 image.png

TS补充类型

image.png

TS泛型

泛型不预先指定具体的类型,而在使用的时候再指定类型的一种特性。不仅可以使用在函数中,类型名后加一个尖括号,使用泛型。 image.png 语法

  • 泛型约束:限制泛型必须符合字符串
  • 泛型的默认类型(语法与ES6中结构的默认指示相似): image.png type关键字
  • 类型别名:通过type关键字定义别名类型
  • 类型断言:通过as关键字断言某个类型为正确类型 image.png 字符串/数字 字面量 允许指定字符串/数字必须的固定值,用符号“|”作为分割 image.png

TypeScript高级数据类型

  • 联合类型(|):IA | IB;联合类型表示一个值可以是几种类型之一
  • 交叉类型(&):IA & IB;多种类型叠加到一起成为一种类型,包含了所需的所有类型的特征 image.png
  • 类型保护与类型守卫
    类型保护只能访问联合类型中交集的部分,类型守卫可以解决类型保护不能访问交集以外部分的问题,需要定义一个函数,返回值是一个类型谓词,生效范围为子作用域。 image.png image.png

使用样例

  • 联合类型+类型保护=自动类型判断 image.png
  • 使用关键字索引类型 image.png

函数返回值类型

通过泛型表达(泛型必须是一个函数) image.png

工程应用

Web(相关loader: awesome-typescript-loader, babel-loader,不同loader的配置也会不一样)

  • webapack loader配置,ts转换为js文件
  • 配置tsconfig.js文件
  • 运行webpack启动/打包
  • loader处理js文件会进行编译与类型检查

Node.js

  • 使用TSC编译
    • 安装Node和npm
    • 配置tsconfig.js文件
    • 使用npm安装tsc
    • 使用tsc运行编译得到js文件

参考资料

TS中的方法重载,函数重载,构造器重载