这是我参与「第四届青训营」笔记创作活动的的第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
- 配置webpack loader相关配置
- 配置tsconfig文件
- 运行webpack启动/打包
- loader处理ts文件时,会进行编译和类型检查
Nodejs,使用tsc编译
- 安装Node与npm
- 配置tsconfig.js文件
- 使用npm安装tsc
- 使用tsc编译得到js文件