「TypeScropt学习」 | 青训营笔记

137 阅读2分钟

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

什么是TypeScript?

TypeScript是微软开发的一个开源的编程语言,通过在JavaScript的基础上添加静态类型定义构建而成。TypeScript通过TypeScript编译器Babel转译为JavaScript代码,可运行在任何浏览器,任何操作系统

JavaScript与TypeScript对比

JS:动态类型(在执行的时候检查错误),弱类型语言
TS:静态类型(在编译的时候检查错误),弱类型语言
弱类型语言,比如字符型和数字型的1相加时可以得到2,会进行隐式类型转换。

TypeScript的优势

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

编译器推荐:

Snipaste_2023-02-01_14-54-29.jpg

基本语法:

1. 基础数据类型

Snipaste_2023-02-01_14-55-40.jpg

2. 对象类型

image.png

3. 函数类型

image.png

4. 函数重载

image.png

5. 数组类型

image.png

补充类型

image.png

类型别名&类型断言

image.png

字符串/数字 字面量

image.png

高级类型

联合/交叉类型

为书籍列表编写类型时,类型生命繁琐,存在较多重复 image.png

image.png

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

image.png

类型保护与类型守卫

image.png

image.png

函数的返回值类型

第一种:

实现函数delayCall的类型声明,delayCall接受一个函数作为入参,其实现延迟1s运行函数其返回promise,结果为入参函数的返回结果 image.png

第二种:

关键字【extends】跟随泛型出现时,表示类型推断,其表达可类比三元表达式如T===判断类型?类型A:类型B
关键字【infer】出现在类型推荐中,表示定义类型变量,可以用于指代类型 如该场景下,将函数的返回值类型作为变量,使用新泛型R表示,使用在类型推荐命中的结果中

image.png

工程应用-web

webpack

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

相关loder:

工程应用-Node

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

image.png