TypeScript 简介

文档

  1. typeScript官网
  2. 中文文档:https://www.tslang.cn/index.html
  3. 中文文档(简洁点):https://typescript.bootcss.com
  4. MDN

前言

JavaScript 引入编程社区已有 20 多年,如今已成为有史以来使用最广泛的跨平台语言之一。JavaScript 最初是一种用于为网页添加简单交互性的小型脚本语言,如今已发展成为各种规模的前端和后端应用程序的首选语言。虽然用 JavaScript 编写的程序的大小、范围和复杂性呈指数级增长,但 JavaScript 语言表达不同代码单元之间关系的能力却没有增长。再加上 JavaScript 相当特殊的运行时语义,语言和程序复杂性之间的这种不匹配使得 JavaScript 开发成为一项难以大规模管理的任务。

程序员最常犯的错误可以归结为类型错误:在需要不同类型的值的地方使用了某种类型的值。这可能是由于简单的拼写错误、未能理解库的 API 界面、对运行时行为的错误假设或其他错误造成的。
TypeScript 的目标是成为 JavaScript 程序的静态类型检查器 - 换句话说,它是一个在代码运行之前运行的工具(静态),并确保程序的类型正确(类型检查)。

什么是TypeScript

TypeScript 是一种由微软开发的自由和开源的编程语言,它是 JavaScript 的一个超集,扩展了 JavaScript 的语法。

TypeScript 是一个为 JavaScript 添加静态类型检查的编程语言。

语言特性

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

  • 静态类型系统
    • 类型批注和编译时类型检查:允许开发者明确地为变量和函数等添加类型标注,在编译阶段进行类型检查,有助于提前发现类型不匹配的错误。
    • 类型推断:TypeScript 能够根据变量的初始值自动推断其类型,减少了开发者手动标注类型的工作量。
    • 类型擦除:在编译为 JavaScript 代码时,类型信息会被擦除,不影响最终的运行性能。
  • 接口(Interface):用于定义对象的结构和行为契约。它规定了对象应该具有哪些属性和方法,以及这些属性和方法的类型,有助于确保不同模块之间对象的一致性和规范性。
  • 枚举(Enum):可以创建一组具有名称的常量值,使得代码更具可读性和可维护性。例如,可以定义一周的天数或者颜色等枚举类型。
  • Mixin:一种将多个类的功能组合到一个类中的方式,增强了代码的复用性和灵活性。
  • 泛型编程(Generics):使函数和类能够在多种类型上工作,而不需要为每种类型单独编写代码,提高了代码的通用性和可重用性。
  • 名字空间(Namespace):用于组织和分组相关的代码,避免全局命名冲突,使代码结构更清晰。
  • 元组(Tuple):允许定义具有固定长度和不同类型元素的数组,提供了一种更灵活的数据结构。
  • Await:用于异步操作,使异步代码的编写更加简洁和直观,类似于同步代码的结构。

从 ECMA 2015 反向移植的功能:

  • 类(Class):提供了更清晰和面向对象的方式来定义和组织代码,包括属性、方法、构造函数等。
  • 模块(Module):更好地组织和封装代码,通过 import 和 export 关键字实现模块的导入和导出。
  • lambda 函数的箭头语法:使函数的定义更简洁,并且在处理 this 上下文时有更好的表现。
  • 可选参数以及默认参数:增加了函数定义的灵活性,使函数调用更方便。

TypeScript 和 JavaScript 的区别

TypeScript 是以JavaScript为基础构建的语言。
TypeScript 是 JavaScript 的超集:因此 JavaScript 语法是合法的 TypeScript ,TypeScript 和JavaScript 的运行时行为是相同的。

注意:TypeScript不能被 JavaScript 解析器直接执行,需要编译转换成 JavaScript 再执行。

  1. 类型系统
    • JavaScript:是动态类型语言,变量的类型在运行时确定。
    • TypeScript:具有静态类型系统,在编译时进行类型检查,能提前发现类型错误。
  2. 语法和特性
    • JavaScript:语法相对简单和灵活。
    • TypeScript:基于 JavaScript 语法扩展,增加了类、接口、枚举、泛型等特性,使代码更具结构化和可维护性。
  3. 代码提示和智能感知
    • JavaScript:在开发工具中的代码提示和智能感知相对较弱。
    • TypeScript:由于明确的类型定义,开发工具能提供更强大和准确的代码提示和自动完成。
  4. 项目规模和团队协作
    • JavaScript:对于小型项目可能足够,但在大型项目和团队协作中,代码的可读性和可维护性可能面临挑战。
    • TypeScript:更适合大型项目和团队开发,有助于保持代码的一致性和规范性。
  5. 学习曲线
    • JavaScript:相对较容易上手。
    • TypeScript:需要先理解类型系统和新增的特性,学习曲线略高,但对于有一定编程基础的开发者并非难以掌握。
  6. 运行环境
    • JavaScript:可以直接在浏览器和 Node.js 等环境中运行。
    • TypeScript:需要先编译为 JavaScript 代码,然后在支持 JavaScript 的环境中运行。
  • 18
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值