前端与 HTML | 青训营笔记——第四课

102 阅读2分钟

前端与 HTML | 青训营笔记——第四课

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

一、为什么什么是TypeScript?

对比

JS:动态类型、弱类型语言

TS:静态类型、弱类型语言

静态类型:多人合作的大型项目中,获得更好的稳定性和开发效率

  • 可读性增强:基于语法解析TSDoc,ide增强
  • 可维护性增强:在编译阶段暴露大部分错误

JS的超集:

  • 包含于兼容所有JS特性,支持共存
  • 支持渐进式引入与升级

二、基本语法

  • 对象类型

  • 函数类型

  • 数组类型

  • TypeScript泛型

    类型别名&类型断言

    字符串/数字 字面量

三、高级类型

  • 联合/交叉类型:为书籍列表编写类型——类型声明繁琐,存在较多重复

    联合类型:|A| IB;联合类型表示一个值可以是几种类型之一

    交叉类型:IA & IB;多种类型叠加到一起成为一种类型,它包含了所需的所有类型的特性

  • 类型保护与类型守卫

    类型守卫:定义一个函数,它的返回值是一个类型谓词,生效范围为子作用域

    联合类型+类型保护=自动类型判断

  • 高级类型

    1、类型实现繁琐:若obj类型较为复杂,则声明source和target便需要大量重复2遍

    容易出错:若target增加/减少key,则需要source联动去除

    2、索引类型:关键字【keyof】,其相当于取值对象中的所有key组成的字符串字面量

  • 函数返回值类型

    //实现函数delayCall的类型声明

    //delayCall接受一个函数作为入参,其实现延迟1s运行函数

    //其返回promise,结果为入参函数的返回结果

    关键词【extends】跟随泛型出现时,表示类型推断,其表达可类比三元表达式

    关键词【infer】出现在类型推荐中,表示定义类型变量,可以用于指代类型

四、工程应用

  • Web

    1、配置webapack loader相关配置

    2、配置同时从fig.js文件

    3、运行webpack启动/打包

    4、loader处理ts文件时,会进行编译与类型检查

  • Node

    1、安装Node与npm

    2、配置tsconfig.js文件

    3、使用npm安装tsc

    4、使用tsc运行编译得到js文件