TypeScript & Flow 都是 JavaScript 静态代码检查, 在编程工作中难免会有这样那样的原因导致代码不规范, 这时候它们的作用就体现了出来

  • 从生态圈角度来看, TS 的生态圈要远大于 Flow

  • 从编写角度来看, 个人认为如果一个项目需要做很细致的封装工作的时候, 如 antd, TS 要远远优于 Flow, 而如果只是做一些基本的代码检测时, 使用 Flow 会更优于 TS, 因为 TS 改变了 JavaScript 原有的写法, 而 Flow 对编程的体验会更趋近于 JavaScript 原有的写法

TypeScript

TypeScript 是微软开发的 JavaScript 的超集, 主要提供了类型系统和 ES6 的支持, TypeScript兼容 JavaScript, 可以载入 JavaScript 代码然后运行; TypeScript 与 JavaScript 相比进步的地方包括: 加入注释, 让编译器理解所支持的对象和函数, 编译器会移除注释, 不会增加开销; 增加一个完整的类结构, 使之更新是传统的面向对象语言

TypeScript 是 JavaScript 的超集, 扩展了 JavaScript 的语法, 因此现有的 JavaScript 代码可与 TypeScript 一起工作无需任何修改, TypeScript 通过类型注解提供编译时的静态类型检查; TypeScript 可处理已有的 JavaScript 代码, 并只对其中的 TypeScript 代码进行编译

  • 优势
    1. 易于查错、重构、协作
    2. 增强代码的可读性、可维护性、健壮性
    3. (包容性) .js 文件直接重命名为 .ts 即可, 不显式定义类型也能自动做出类型推论, 涵盖几乎一切类型, 即使 TS 编译报错, 仍然可以生成 JS 文件, 兼容第三方库(即使不是用 TS 写的, 也可以编辑单独的类型文件供 TS 读取)
    4. 社区活跃
  • 特点
    • TypeScript 是微软推出的开源语言,使用 Apache 授权协议
    • TypeScript 是 JavaScript 的超集
    • TypeScript 增加了可选类型、类和模块
    • TypeScript 可编译成可读的、标准的 JavaScript
    • TypeScript 支持开发大规模 JavaScript 应用
    • TypeScript 设计用于开发大型应用,并保证编译后的 JavaScript 代码兼容性
    • TypeScript 扩展了 JavaScript 的语法,因此已有的 JavaScript 代码可直接与 TypeScript 一起运行无需更改
    • TypeScript 文件扩展名是 ts,而 TypeScript 编译器会编译成 js 文件
    • TypeScript 语法与 JScript .NET 相同
    • TypeScript 易学易于理解
  • 语法特性
    • 类 Classes
    • 接口 Interfaces
    • 模块 Modules
    • 类型注解 Type annotations
    • 编译时类型检查 Compile time type checking
    • Arrow 函数 (类似 C# 的 Lambda 表达式)

Flow

flow 是一个 javascript 的静态检查工具,flow-typed 为我们提供了三方类似 type 的生成

  • flow
  • flow-typed

Reference

阮一峰 TypeScript 教程