3、TypeScript基础入门
2022-03-31 12:58:45 0 举报
AI智能生成
前端开发,Ts学习
作者其他创作
大纲/内容
TS是什么
TypeScript 是一种开源语言
TypeScript 也是一种<font color="#b71c1c">保留 JavaScript </font><b><font color="#b71c1c">运行时行为</font></b> 的编程语言
TypeScript 是<font color="#b71c1c">通过在 JavaScript 的基础上添加 静态类型 定义构建而成</font>
是 JavaScript 的一个类型化 超级
TypeScript 通过 TypeScript编译器 或Babel转译为JavaScript代码<br>
<font color="#b71c1c">可运行在任何浏览器,任何操作系统</font>
(不能直接被解析执行,需要编译为JS才能执行)
TypeScript 增强了编辑器(IDE)的功能,提供了代码补全、接口提示、跳转到定义、代码重构等能力
运行时行为:
例如: 在 JavaScript 中除以零会产生Infinity而不是抛出运行时异常。
作为一项原则,TypeScript永远不会改变 JavaScript 代码的运行时行为。
TS的类型系统
TS 是 静态类型 、弱类型
按照<b><font color="#b71c1c">类型检查时机</font></b>
类型系统按照<b><font color="#b71c1c">「类型检查的时机」</font></b>来分类,可以分为<font color="#b71c1c"><b>动态类型</b></font>和<font color="#b71c1c"><b>静态类型。</b></font><br>
静态类型
是指<b><font color="#f57c00">编译阶段</font></b>就<font color="#f57c00"><b>能确定每个变量的类型</b></font>,这种语言的类型错误往往<font color="#f57c00"><b>会导致语法错误</b></font>。
TypeScript 在运行前需要先编译为 JavaScript,而在编译阶段就会进行类型检查,所以 TypeScript 是静态类型
动态类型
是指在<b><font color="#00ff00">运行时</font></b>才会<b><font color="#00ff00">进行类型检查</font></b>,这种语言的类型错误往往<b><font color="#00ff00">会导致运行时错误</font></b>。
JavaScript 是一门解释型语言,没有编译阶段,所以它是动态类型
区别
<br>
按照 <b><font color="#b71c1c">是否允许隐式类型转换</font></b>
类型系统按照「<b><font color="#b71c1c">是否允许隐式类型转换</font></b>」来分类,可以分为<font color="#b71c1c"><b>强类型</b></font>和<b><font color="#b71c1c">弱类型</font></b>。
<b><font color="#b71c1c">TypeScript 是完全兼容 JavaScript 的</font></b>,它<b><font color="#b71c1c">不会修改 JavaScript 运行时的特性</font></b>,所以它们<b><font color="#b71c1c">都是弱类型</font></b>。<br>
虽然 TypeScript 是弱类型,但是我们可以<b><font color="#0000ff">借助 TypeScript 提供的类型系统</font></b><font color="#0000ff"><b>,以及 ESLint 提供的代码检查功能</b></font>,来限制变量的更改。<br>这在一定程度上<font color="#0000ff"><b>使得 TypeScript 向「强类型」更近一步</b></font>——当然,这种限制是可选的。<br>
核心设计理念:<br>
在<b>完整保留 JavaScript 运行时行为的基础上</b>,<b>通过引入静态类型系统来提高代码的可维护性,减少可能出现的 bug</b>。
TS的优点
静态识别出那些可能有错的部分
为大段代码提供结构化机制
不给编译产物增加运行时开销
输出整洁、地道、可读的 JavaScript 代码
实现一种可组合、易推理的(easy to reason about)语言
永远和 ES 规范保持一致<br>
保留所有 JavaScript 代码的运行时行为
一致的、完全可擦除的结构化类型系统<br>
成为跨平台开发工具
从 TypeScript 1.0 起不在引入重大破坏性变动
避免添加表达式级的语法特性
......
0 条评论
下一页