typescript入门总结 | 青训营笔记

77 阅读2分钟

这是我参与「第四届青训营」笔记创作活动的的第4天

Type script

是什么

动态类型语言VS静态类型语言

动态类型语言的类型会在运行时才做类型的匹配和检验,而静态类型语言会在提前编译确定类型,也就是在你写代码的时候如果写错会报错,而动态类型语言会跑起来再报错。

弱类型语言VS强类型语言

会发生隐式类型转换的语言就是弱类型语言,比如在javascript里当字符串和数字相加时会把数字强制转换为字符串进行拼接,而在强类型语言里是不可以将字符串和数字相加的。

综上所述,typescript是一门静态类型的弱类型语言,而javascript是一门动态类型的弱类型语言。

为什么选择TypeScript

  • 可读性增强,基于语法解析TSDoc,ide增强
  • 可维护性增强,可在编译阶段暴露绝大部分的错误
  • 适用于多人项目,拥有更好的稳定性和开发效果

基本数据类型

  • 字符串
  • 数字
  • 布尔值
  • null
  • undefined

在定义之后加‘:’通过明确数据类型来详细定义。 对象也是同类 根据接口定义新的类时不能缺少属性,但可以新加

数组的不同表示

  • type A = number[]
  • type B = Array<string|number|Record<string, number>>
  • type C = [number,number,string,string]
  • interface D { [key: number ]: any; }

实例化

  • const a:A = [1,2,3,4,5,6];
  • const b:B = [1,2,'3','4',{a:1}];
  • const c:C = [1,2,'3','4'];
  • const d:D = ['string',() => null, {}, []];

Typescript泛型

不预先制定具体类型,在使用时再制定,在类和接口中都可以使用 也可对其进行一定程度的约束。

联合/交叉类型

  • 联合:LA|LB 表示一个值可以是几种类型之一
  • 交叉:LA&LB 表示多种类型叠加到一起成为一种类型,包含了所需所有类型的特性

类型的保护/守卫

访问联合类型时,为了程序安全,仅可以访问联合类型中的交集部分,为了解决这个问题,引入了类型守卫和类型保护的问题。

  • 类型守卫,定义一个函数,返回值为一个类型谓词,生效范围为子作用域
  • 类型保护,对输入进行判断

工程应用

Webpack

  1. 配置webpack loader相关配置
  2. 配置tsconfig文件
  3. 运行webpack启动/打包
  4. loader处理ts文件时,会进行编译和类型检查

Nodejs,使用tsc编译

  1. 安装Node与npm
  2. 配置tsconfig.js文件
  3. 使用npm安装tsc
  4. 使用tsc编译得到js文件