这是我参与「第四届青训营」笔记创作活动的的第5天
TypeScript简介
TS的由来
我们程序员编写最常见的错误就是类型错误,如何解决这个问题你,这时有了TS。为了解决类型判断,TS添加了自己新的语法。TS的目标就是成为JS程序的静态类型检查器,确保我们的类型正确。
TypeScript在代码编译的时候就可以发现错误。
有些语言根本不允许那些有缺陷的程序运行。在不运行代码的情况下检测代码中的错误称为
静态检查。确定什么是错误,什么不是基于被操作的值的种类被称为静态类型检查。
什么是TS
- 动态类型
- 在执行阶段才去进行一个类型的匹配
- JS的一个特征是脚本语言,在浏览器执行的时候才会进行类型匹配
- 静态类型
- 提前去做类型的匹配
- 如python,java都是需要先走编译流程
- 弱类型语言
- 特征:类型转换
- 例如:当运行数字1和字符串1相加的时候,js是可以通过的
- JavaScript
- 是动态类型,弱类型语言
- TypeScript
- 是静态类型,弱类型语言
- 可读性增强,基于语法解析TSDoc,ide能力得到增强
- 可维护性增强:在编译阶段暴露大部分错误
- 是JS的超集
- 包含于兼容所有JS特性,可以共存
- 支持渐进式引入与升级
TS 的特点
- 可读性增强:基于语法解析TSDos,ide增强
- 可维护性增强:在编译阶段暴露大部分错误。(多人合作的大型项目中,获得更好的稳定性和开发效率)
- 包含于兼容所有JS特性,支持共存
- 支持渐进式引入与升级
TypeScript与JS相比的优势:
-
TypeScript工具使重构更变的容易、快捷。
-
TypeScript 引入了 JavaScript 中没有的“类”概念。
-
TypeScript 中引入了模块的概念,可以把声明、数据、函数和类封装在模块中
-
类型安全功能能在编码期间检测错误,这为开发人员创建了一个更高效的编码和调试过程。
TS的运行
TypeScript 是一种静态类型语言,也是一种保留JavaScript
运行时行为的编程语言。
例如,在 JavaScript 中除以零会产生Infinity而不是抛出运行时异常。作为一项原则,TypeScript永远不会改变 JavaScript 代码的运行时行为。这意味着如果您将代码从 JavaScript 移动到 TypeScript,即使 TypeScript 认为代码存在类型错误,也可以保证以相同的方式运行。
TypeScript是否可以直接执行呢?答案是否定的,这是因为浏览器的js引擎只能是执行js。因此TypeScript如果要执行,就必须先要编译为JavaScript。
一旦 TypeScript 的编译器检查完你的代码,它就会删除类型以生成生成的“编译”代码。这意味着一旦你的代码被编译,生成的纯 JS 代码就没有类型信息。
TypeScript 类型
常用基础类型
JS已有类型
- 原始类型(基础数据类型):number/string/boolean/null/undefined/symbol
- 对象类型:object
TS新增类
- 联合类型,自定义类型(类型别名),接口,元组,字面量类型,枚举,void,any等
原始类型
原始类型特点: 简单,完全按照JS中的类型来书写。
对象类型
特点:对象类型在TS更加细化,对每个的对象都有自己的类型语言。
常用高级类型
高级类型:
- class类
- 类型兼容性
- 交叉类型
- 泛型,keyof
- 索引签名,索引查询类型
- 映射类型
工程应用
Web
- webpack
- 配置webpack loader(将webpack不能识别的转为可识别的)
- 配置tsconfig.js文件
- 运行webpack启动/打包
- loader处理ts文件时会进行编译与类型检查
Node
- Node
- 安装Node与npm
- 配置tsconfig.js文件
- 使用npm安装tsc
- 使用tsc运行编译得到js文件