TypeScript跨语言对照
编程语言基础与跨语言模型:从 TypeScript 到 JavaScript、Java、Python、C++:TypeScript跨语言对照
0 子目录6 文档
文档
6TypeScript、JavaScript、Java、Python、C++ 总览矩阵TypeScript、JavaScript、Java、Python、C++ 总览矩阵 跨语言比较最容易犯的错误是只对照语法。应按“类型系统—执行模型—内存与并发—生态用途”逐层比较。 1. 核心矩阵 维度 TypeScript JavaScript Java Python C++ 主要执行物 擦除/转换后的 JavaScript JavaScript 源或引擎字节码/JIT JVM 字节码(通常 JIT/AOT) Python 源/字节TypeScript 与 JavaScript:增加了什么、没有改变什么TypeScript 与 JavaScript:增加了什么、没有改变什么 TypeScript 是 JavaScript 的带类型超集和工具层。任何有效 JavaScript 在迁移策略允许时通常可以逐步进入 TypeScript,但 TypeScript 新语法并不都属于 ECMAScript。 1. TypeScript 增加的主要能力 静态类型标注与推断 JavaScript 同一函数只有运行时行为,编辑器可依赖 JSDoc/推断TypeScript 与 Java:结构类型、JVM 与泛型擦除的差异TypeScript 与 Java:结构类型、JVM 与泛型擦除的差异 二者都提供类、接口、泛型和静态检查,因此最容易被错误类比。关键区别是:TypeScript 描述 JavaScript 值的结构;Java 的类/接口身份、JVM 字节码与运行时模型更强地参与程序语义。 1. 类型关系:结构式 vs 名义式 Java 需要声明实现关系;TypeScript 主要比较成员形状。TS 类若含 private/protected 成员会出TypeScript 与 Python:渐进类型、运行时注解与异步模型TypeScript 与 Python:渐进类型、运行时注解与异步模型 两者都支持渐进采用类型,但类型信息的运行时存在方式和对象模型不同。Python 官方明确说明:运行时不会自动强制函数与变量注解。 1. 类型检查阶段 TypeScript 标注通常从 JavaScript emit 中擦除。 Python 注解通常可通过 annotations 、 typing.get type hints 等在运行时读取,但解释器默认不据此拒绝调TypeScript 与 C++:类型擦除、模板实例化、内存和对象模型TypeScript 与 C++:类型擦除、模板实例化、内存和对象模型 两者都能写类、泛型样式代码,但一个主要描述 JavaScript 应用,另一个直接参与本机对象布局、资源生命周期和代码生成。语法相似处的语义距离很大。 1. 编译产物 TypeScript 通常擦除类型并输出 JavaScript,由浏览器/Node 等 host 执行。 C++ 编译器把翻译单元生成目标文件,再由链接器形成本机程序或库。 TS 的 target 是TypeScript 独有能力与缺失能力清单TypeScript 独有能力与缺失能力清单 本清单从 TypeScript 视角集中回答“它特别擅长什么、它本身没有什么”。“没有”不等于生态做不到,而是需要 JavaScript host、库、构建器或不同语言机制完成。 1. TypeScript 特别独有/突出的能力 1.1 为现有 JavaScript 形状建立结构类型 无需要求运行时对象继承统一基类,即可描述对象、函数、构造器、模块与全局变量。这是 TypeScript 适配