Typescript入门 | 青训营笔记
这是我参加【第四届青训营】笔记创作活动的第13天
01—什么是TypeScript
01-1—TypeScript发展历史
01-2—为什么选择使用TypeScript
JS:动态类型;弱类型语言。
TS:静态类型;弱类型语言。
动态类型vs静态类型
动态类型的特征是在执行阶段才会确定类型的匹配;静态类型的特征是会提前编译确定类型。
也就是静态类型在你写代码的时候如果写错会报错,而动态类型语言会跑起来再报错。
强类型语言vs弱类型语言
弱类型语言特征:类型转换。
会发生隐式类型转换的语言就是弱类型语言,比如在javascript里当字符串和数字相加时会把数字强制转换为字符串进行拼接,而在强类型语言里是不可以将字符串和数字相加的。
01-3—typescript相比javascript有什么优点
静态类型:
- 可读性增强:基于语法解析TSDoc,ide增强;
- 可维护性增强:在编译阶段暴露大部分错误;
- 多人合作的大型项目中,获得更好的稳定性和开发效率
JS的超集:
- 包含于兼容所有JS特性,支持共存;
- 支持渐进式引入与升级
01-4—编辑器推荐
02—基本语法
02-1—基础数据类型
这里通过对比js和ts代码的差异来帮助理解
02-2—对象类型
02-3—函数类型
02-4—函数重载
报错
定义了一个匿名函数,函数自变量赋值给了getDate2变量,约定类型IGetDate,与前面函数定义不一样。前一步是定义,后一步赋值,把匿名函数赋值给变量,发生了类型匹配。匿名函数没有函数声明,会做一次类型推断,将函数自变量类型与IGetDate类型做匹配。错误
修改IGetDate函数范围表达大于匿名函数范围表达。
02-5—数组类型
02-6—Typescript补充类型
02-7—Typescript泛型
定义类型时类型不明确,在使用时再指定类型的一种特性。
02-8—类型别名&类型断言
02-9—字符串/数字 字面量
03—高级类型
03-1—联合/交叉类型
03-2—类型保护与类型守卫
这样会报错
可以通过类型守卫进行改造
两个类型没有重合点时,写类型守卫。
03-3—高级类型
03-4—函数返回值类型
04—工程应用
04-1—浏览器Web
- 配置webapack loader相关配置;
- 配置tsconfig.js文件;
- 运行webpack启动,打包;
- loader处理ts文件时,会进行编译与类型检查。
04-2—Node
- 安装Node与npm;
- 配置tsconfig.js文件;
- 使用npm安装tsc;
- 使用tsc运行编译得到js文件。