TypeScript系列教程一《开篇》

2021-07-16 11:12:57 浏览数 (1)

TypeScript 是 JavaScript 的一个超集,支持 ECMAScript 6 标准(ES6 教程)。TypeScript 由微软开发的自由和开源的编程语言。TypeScript 设计目标是开发大型应用,它可以编译成纯 JavaScript,编译出来的 JavaScript 可以运行在任何浏览器上

学前知识点

强类型和弱类型

1. 先定义一些基础概念

  • Program Errors – trapped errors导致程序终止执行,如除0,Java中数组越界访问 – untrapped errors。 出错后继续执行,但可能出现任意行为。如C里的缓冲区溢出、Jump到错误地址
  • Forbidden Behaviours 语言设计时,可以定义一组forbidden behaviors. 它必须包括所有untrapped errors, 但可能包含trapped errors.
  • Well behaved、ill behaved – well behaved:如果程序执行不可能出现forbidden behaviors, 则为well behaved。 – ill behaved: 否则为ill behaved…

2. 有了上面的概念,再讨论强、弱类型,静态、动态类型强、弱类型

  • 强类型strongly typed: 如果一种语言的所有程序都是well behaved——即不可能出现forbidden behaviors,则该语言为strongly typed。
  • 弱类型weakly typed: 否则为weakly typed。比如C语言的缓冲区溢出,属于untrapped errors,即属于forbidden behaviors…故C是弱类型前面的人也说了,弱类型语言,类型检查更不严格,如偏向于容忍隐式类型转换。譬如说C语言的int可以变成double。 这样的结果是:容易产生forbidden behaviours,所以是弱类型的

动态类型和静态类型

  • 静态类型 statically: 如果在编译时拒绝ill behaved程序,则是statically typed;
  • 动态类型dynamiclly: 如果在运行时拒绝ill behaviors, 则是dynamiclly typed

总结

强弱类型没有明确的学术定义、动静态类型描述感觉也不明确。

从体验上描述强类型和弱类型的区别:

  • 强类型:不允许隐式类型转换
  • 弱类型:容忍隐式类型转换

动静态类型区别:

  • 静态类型:编译时候检查类型
  • 动态类型:运行时检查类型

JavaScript 与 TypeScript 的区别

TypeScript 是 JavaScript 的超集,扩展了 JavaScript 的语法,因此现有的 JavaScript 代码可与 TypeScript 一起工作无需任何修改,TypeScript 通过类型注解提供编译时的静态类型检查。

TypeScript 可处理已有的 JavaScript 代码,并只对其中的 TypeScript 代码进行编译。

为什么要用TypeScript

  • TypeScript真的有必要吗?
  • TypeScript 解决了什么痛点?
  • TypeScript 的好处都有啥?和 JavaScript 的区别在哪?

我的观点:

  • 主要 解决了javascript 类型缺陷,利用编译,提前进行类型检查,类型安全。避免犯错
  • 增加一些语法糖和编程模式,类似枚举、元组、Mixin、泛型更编程编程习惯

TypeScript语言特性

TypeScript 是一种给 JavaScript 添加特性的语言扩展。增加的功能包括:

  • 类型批注和编译时类型检查
  • 类型推断
  • 类型擦除
  • 接口
  • 枚举
  • Mixin
  • 泛型编程
  • 名字空间
  • 元组

JavaScript 迁移到TypeScript

JavaScript迁移到TypeScript是渐进式的,可以根据配置选项编译。

0 人点赞