程序员scholar 程序员scholar
首页
  • Java 基础

    • JavaSE
    • JavaIO
    • JavaAPI速查
  • Java 高级

    • JUC
    • JVM
    • Java新特性
    • 设计模式
  • Web 开发

    • Servlet
    • Java网络编程
  • Web 标准

    • HTML
    • CSS
    • JavaScript
  • 前端框架

    • Vue2
    • Vue3
    • Vue3 + TS
    • 微信小程序
    • uni-app
  • 工具与库

    • jQuery
    • Ajax
    • Axios
    • Webpack
    • Vuex
    • WebSocket
    • 第三方登录
  • 后端与语言扩展

    • ES6
    • Typescript
    • node.js
  • Element-UI
  • Apache ECharts
  • 数据结构
  • HTTP协议
  • HTTPS协议
  • 计算机网络
  • Linux常用命令
  • Windows常用命令
  • SQL数据库

    • MySQL
    • MySQL速查
  • NoSQL数据库

    • Redis
    • ElasticSearch
  • 数据库

    • MyBatis
    • MyBatis-Plus
  • 消息中间件

    • RabbitMQ
  • 服务器

    • Nginx
  • Spring框架

    • Spring6
    • SpringMVC
    • SpringBoot
    • SpringSecurity
  • SpringCould微服务

    • SpringCloud基础
    • 微服务之DDD架构思想
  • 日常必备

    • 开发常用工具包
    • Hutoll工具包
    • IDEA常用配置
    • 开发笔记
    • 日常记录
    • 项目部署
    • 网站导航
    • 产品学习
    • 英语学习
  • 代码管理

    • Maven
    • Git教程
    • Git小乌龟教程
  • 运维工具

    • Docker
    • Jenkins
    • Kubernetes
  • 算法笔记

    • 算法思想
    • 刷题笔记
  • 面试问题常见

    • 十大经典排序算法
    • 面试常见问题集锦
关于
GitHub (opens new window)
首页
  • Java 基础

    • JavaSE
    • JavaIO
    • JavaAPI速查
  • Java 高级

    • JUC
    • JVM
    • Java新特性
    • 设计模式
  • Web 开发

    • Servlet
    • Java网络编程
  • Web 标准

    • HTML
    • CSS
    • JavaScript
  • 前端框架

    • Vue2
    • Vue3
    • Vue3 + TS
    • 微信小程序
    • uni-app
  • 工具与库

    • jQuery
    • Ajax
    • Axios
    • Webpack
    • Vuex
    • WebSocket
    • 第三方登录
  • 后端与语言扩展

    • ES6
    • Typescript
    • node.js
  • Element-UI
  • Apache ECharts
  • 数据结构
  • HTTP协议
  • HTTPS协议
  • 计算机网络
  • Linux常用命令
  • Windows常用命令
  • SQL数据库

    • MySQL
    • MySQL速查
  • NoSQL数据库

    • Redis
    • ElasticSearch
  • 数据库

    • MyBatis
    • MyBatis-Plus
  • 消息中间件

    • RabbitMQ
  • 服务器

    • Nginx
  • Spring框架

    • Spring6
    • SpringMVC
    • SpringBoot
    • SpringSecurity
  • SpringCould微服务

    • SpringCloud基础
    • 微服务之DDD架构思想
  • 日常必备

    • 开发常用工具包
    • Hutoll工具包
    • IDEA常用配置
    • 开发笔记
    • 日常记录
    • 项目部署
    • 网站导航
    • 产品学习
    • 英语学习
  • 代码管理

    • Maven
    • Git教程
    • Git小乌龟教程
  • 运维工具

    • Docker
    • Jenkins
    • Kubernetes
  • 算法笔记

    • 算法思想
    • 刷题笔记
  • 面试问题常见

    • 十大经典排序算法
    • 面试常见问题集锦
关于
GitHub (opens new window)
npm

(进入注册为作者充电)

  • TypeScript

    • TypeScript - 介绍
      • 1. 什么是 TypeScript
      • 2. JS、ES、TS 的关系
      • 3. TypeScript 与 JavaScript 的区别
      • 4. TypeScript 的竞争者有哪些?
        • ESLint 和 TSLint
        • CoffeeScript
        • Flow
        • 其他语言和工具
      • 5. TypeScript 的未来
        • 对 TypeScript 的未来展望
        • 现代竞争者
        • TypeScript 在生态中的位置
        • TypeScript 的受众
        • TypeScript 如何跟踪 JS 生态
    • TypeScript - 安装和使用
    • TypeScript - 基本类型
    • TypeScript - 编译和配置
    • TypeScript - 文件打包
    • TypeScript - 接口
    • TypeScript - 函数
    • TypeScript - 类
    • TypeScript - 泛型
    • TypeScript 的导入导出
    • TypeScript - 类型推断
    • TypeScript - 高级类型
  • JS 超集语言 - TypeScript
  • TypeScript
scholar
2023-08-31
目录

TypeScript - 介绍

  • 1. 什么是 TypeScript
  • 2. JS、ES、TS 的关系
  • 3. TypeScript 与 JavaScript 的区别
  • 4. TypeScript 的竞争者有哪些?
    • ESLint 和 TSLint
    • CoffeeScript
    • Flow
    • 其他语言和工具
  • 5. TypeScript 的未来
    • 对 TypeScript 的未来展望
    • 现代竞争者
    • TypeScript 在生态中的位置
    • TypeScript 的受众
    • TypeScript 如何跟踪 JS 生态

提示

TypeScript 的 官网文档 (opens new window)

# 1. 什么是 TypeScript

在编程社区引入 20 多年后,JavaScript 已经发展成为全球最广泛应用的跨平台编程语言之一。最初,JavaScript 只是一种用于向网页添加简单交互的小型脚本语言,但它现在已经成为前端和后端应用程序开发的首选语言。随着程序的复杂性和规模不断增长,JavaScript 的语言特性未能跟上这些变化,导致开发大型应用程序时面临不少挑战。

TypeScript 由微软开发,是一种自由和开源的编程语言,它是 JavaScript 的超集,主要在 JavaScript 的基础上添加了可选的静态类型和基于类的面向对象编程功能。TypeScript 的设计目标是作为 JavaScript 程序的静态类型检查器,这意味着它能够在代码运行之前检测和修正类型错误,从而提高代码的可靠性和可维护性。

主要特点:

  • 静态类型检查:在代码运行之前检测潜在的类型错误,帮助开发者在编写代码时发现并修复问题。
  • 超集:TypeScript 包含 JavaScript 的所有功能,并在此基础上扩展了新的语法和功能。
  • 编译器与工具:TypeScript 不仅有编译器用于处理语法,还包括语言工具用于与编辑器的集成。

发展历程:

  • 下载量增长:TypeScript 在 npm 上的下载量每年翻倍增长。截止 2021 年 12 月,每周下载量超过 2200 万次,显示了其快速增长的趋势。
  • 版本发布:从 2.0 版本开始,TypeScript 每两个月发布一个新版本。现在,发布周期已改为每三个月一次,每个周期包括一个月的新特性开发和 beta 版本发布,以及两个月的测试和 bug 修复,以确保发布的稳定性。

# 2. JS、ES、TS 的关系

1995 年:JavaScript

  • 背景:网景公司为了在静态 HTML 页面上添加动态效果,由 Brendan Eich 设计了 JavaScript 语言。命名“JavaScript”是为了借助 Java 的知名度,但实际上与 Java 的关系并不大。

1997 年:ECMAScript

  • 背景:为了使 JavaScript 成为全球标准,ECMA(欧洲计算机制造商协会)制定了 JavaScript 的标准,称为 ECMAScript。此标准旨在统一 JavaScript 的实现,确保语言的一致性。

    ECMAScript 版本:

    版本 发布时间 一般称呼 简称
    第 1 版 1997 年 6 月 ECMAScript 1 ES1
    第 2 版 1998 年 4 月 ECMAScript 2 ES2
    第 3 版 1999 年 12 月 ECMAScript 3 ES3
    第 4 版 2007 年 10 月草案 ECMAScript 4 ES4
    第 5 版 2009 年 12 月 ECMAScript 5 ES5
    第 6 版 2015 年 6 月 ECMAScript 2015 ES6
    第 7 版 2016 年 6 月 ECMAScript 2016 ES7
    第 8 版 2017 年 6 月 ECMAScript 2017 ES8
    第 9 版 2018 年 6 月 ECMAScript 2018 ES9
    第 10 版 2019 年 6 月 ECMAScript 2019 ES10
    第 11 版 2020 年 6 月 ECMAScript 2020 ES11
    第 12 版 2021 年 6 月 ECMAScript 2021 ES12

2015 年:TypeScript

  • 背景:TypeScript 是 JavaScript 的超集,包含所有 JavaScript 的功能,并在此基础上扩展了静态类型、类、模块、接口等功能。它通过支持最新的 JavaScript 特性,如异步功能和 Decorators,帮助开发者构建健壮的应用程序。

    关系图: TypeScript 与 ES5、ES2015+ 之间的关系

# 3. TypeScript 与 JavaScript 的区别

TypeScript JavaScript
JavaScript 的超集:增加了静态类型、类、模块、接口等功能 脚本语言:用于创建动态网页
静态类型检查:编译期间可以发现并纠正错误 解释型语言:只能在运行时发现错误
强类型:支持静态和动态类型 弱类型:没有静态类型选项
最终编译成 JavaScript 代码:浏览器能够理解 直接在浏览器中使用
支持模块、泛型和接口 不支持模块、泛型或接口
支持 ES3、ES4、ES5 和 ES6+ 功能 不支持编译其他 ES3、ES4、ES5 或 ES6+ 功能
社区支持在增长中,但还不如 JavaScript 广泛 广泛的社区支持:大量文档和解决问题的支持

# 4. TypeScript 的竞争者有哪些?

TypeScript 的设计目标是为开发者提供一个用于编写和维护大型 JavaScript 项目的工具,帮助减少类型错误,并提供更强的类型支持和开发体验。然而,除了 TypeScript,还有一些其他工具和语言也提供类似的功能或与 TypeScript 在某些方面竞争:

# ESLint 和 TSLint

  • ESLint 和 TSLint 都是静态代码分析工具,用于检测代码中的潜在问题和错误。虽然它们可以在代码中发现错误,但它们并没有添加新的语法或类型系统。
  • TSLint 专为 TypeScript 设计,但随着 TypeScript 本身的进步,TSLint 已经被弃用,推荐使用 ESLint 加 @typescript-eslint/parser 进行 TypeScript 代码的 linting。
  • 这些工具主要用于代码质量和风格检查,而非静态类型检查。它们常与 TypeScript 配合使用,作为补充工具来增强代码的质量控制。

# CoffeeScript

  • CoffeeScript 是一种编译语言,旨在改进 JavaScript 的语法,使其更简洁和易读。它在编译时将 CoffeeScript 代码转换为 JavaScript 代码。
  • CoffeeScript 和 TypeScript 的区别在于,CoffeeScript 主要关注于简化 JavaScript 的语法,而 TypeScript 主要是为 JavaScript 添加静态类型检查。
  • 随着时间的推移,CoffeeScript 的流行度逐渐减少,因为它被认为过于复杂,并且与原生 JavaScript 的差异使得它在实际使用中变得不太受欢迎。

# Flow

  • Flow 是 Facebook 开发的类型检查工具,旨在为 JavaScript 添加类型系统。它通过添加类型注释来增强 JavaScript 代码的类型安全性,并在编译时删除这些类型注释。
  • Flow 和 TypeScript 的目标类似,但实现方式不同。Flow 偏向于类型系统的完备性(soundness),而 TypeScript 更关注于开发体验和实际使用中的合理性(completeness)。
  • Facebook 的大型代码库使用 Flow,但由于其与 TypeScript 的不同目标和实现,TypeScript 的使用在开源社区中变得更为普遍。

# 其他语言和工具

  • JetBrains WebStorm:一个具有强大 JavaScript 和 TypeScript 支持的集成开发环境(IDE)。它通过自定义的引擎进行代码分析、重构和语法检查,对 TypeScript 提供了良好的支持。

  • 编译到 JavaScript 的语言:如 Elm、ReScript 和 KotlinScript,这些语言提供了不同于 JavaScript 的类型系统,并能够编译成 JavaScript。它们通常专注于创建一个干净的类型系统,但其生态系统和社区支持相对较小。

  • WebAssembly (WASM):一种新的二进制指令格式,可以在浏览器中高效地执行。虽然 WASM 可以与 JavaScript 交互,但它并不是直接的 TypeScript 竞争者,而是作为一种补充技术用于提升性能。AssemblyScript 是一种可以编译为 WASM 的语言,它允许使用 TypeScript 的子集进行开发。

  • 编译到 WASM 的语言:如 Rust、Go 和 Swift 等。这些语言可以编译为 WASM,提供不同的基本类型和功能。尽管它们与 TypeScript 在某些方面存在重叠,但它们主要用于不同的应用场景和目标平台。

# 5. TypeScript 的未来

# 对 TypeScript 的未来展望

目前,TypeScript 的最大障碍之一是需要构建工具进行类型检查。如果 JavaScript 语言本身能支持类型注释,TypeScript 的使用门槛将会大大降低。例如,可以通过注释的方式在 JavaScript 中定义类型:

const a/*: string */ = "1234";
1

这种注释方式不会影响 JavaScript 代码的运行,但可以为静态分析工具提供类型信息。这种方式类似于 TypeScript 的类型系统,但需要时间和努力才能实现。

Deno 是一个较新的项目,它通过将 TypeScript 编译到 JavaScript,提供了对 TypeScript 的本地支持,减少了类型检查的障碍。

# 现代竞争者

  • JetBrains WebStorm:提供强大的 TypeScript 支持的 IDE,集成了类型检查和重构功能。

  • 编译到 JavaScript 的语言:如 Elm、ReScript 和 KotlinScript,这些语言的设计目标是与 JavaScript 进行交互,并提供更干净的类型系统。

  • WebAssembly (WASM):虽然 WASM 并不是直接的 TypeScript 竞争者,但它提供了新的可能性来提升性能。AssemblyScript 在这方面做了一些工作,将 TypeScript 编译为 WASM。

  • 编译到 WASM 的语言:如 Rust、Go 和 Swift 等,这些语言可以编译到 WASM,并可能在未来的开发中发挥作用。

# TypeScript 在生态中的位置

TypeScript 希望在类型系统和编辑器工具领域进行创新,提供一种强大的类型系统,帮助开发者更好地管理代码复杂性。TypeScript 与 JavaScript 的关系密切,通过与 TC39 的合作,TypeScript 旨在推动语言特性的进步,并保持对现有 JavaScript 生态的兼容性。

# TypeScript 的受众

TypeScript 的受众包括:

  • JavaScript 用户:通过提供额外的类型检查和工具支持。
  • JS + JSDoc 用户:使用 JSDoc 注释来定义类型,并结合 TypeScript 的类型检查。
  • TypeScript 用户:直接使用 TypeScript 作为编译器和语言工具。
  • TypeScript 严格模式用户:使用 TypeScript 的严格模式以获得更强的类型检查。

# TypeScript 如何跟踪 JS 生态

TypeScript 团队通过以下方式跟踪和响应 JavaScript 生态中的变化:

  • 通过 GitHub Issues 和社区反馈获取意见。
  • 与微软内部团队合作,获取特性需求和调试支持。
  • 通过 Gitter 和 Discord 等社区渠道建立联系。
  • 通过内部工具进行用户测试和设计反馈。
  • 紧密与 VS Code 团队合作,获取语言工具的反馈。
  • 跟踪行业调查、编程语言概述以及从 TypeScript 迁移或迁入的博客文章。
编辑此页 (opens new window)
上次更新: 2024/12/28, 18:32:08
TypeScript - 安装和使用

TypeScript - 安装和使用→

Theme by Vdoing | Copyright © 2019-2025 程序员scholar
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式