Java 与 TypeScript 的核心对比
Java 与 TypeScript 的核心对比
本文面向有 TypeScript 基础的开发者,通过实际代码示例,系统梳理 Java 与 TypeScript 在语法、结构、类型系统、运行方式等方面的主要差异。内容聚焦于知识迁移和技术扩展,帮助你高效理解 Java 的开发模式和生态。

1. 语法与结构
Java 强调面向对象,所有代码都需写在类(class)中,包(package)声明与文件夹结构严格对应。
示例:
java
体验AI代码助手
代码解读
复制代码
package org.example; public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, Java!"); } }
TypeScript 语法更灵活,可直接编写函数和变量,模块系统不依赖文件夹结构。
示例:
typescript
体验AI代码助手
代码解读
复制代码
function helloWorld() { console.log("Hello, TypeScript!"); } helloWorld();
2. 编译与运行方式
Java 代码需编译为字节码(.class),由 JVM 运行,main 方法为程序入口。
命令行示例:
体验AI代码助手
代码解读
复制代码
javac HelloWorld.java java org.example.HelloWorld
TypeScript 编译为 JavaScript,可直接在浏览器或 Node.js 运行,无固定入口。
命令行示例:
体验AI代码助手
代码解读
复制代码
tsc helloWorld.ts node helloWorld.js
3. 类型系统
Java 是静态类型语言,类型检查严格,运行时类型不可变。
示例:
java
体验AI代码助手
代码解读
复制代码
int num = 10; num = "string"; // 编译错误
TypeScript 支持类型推断和断言,类型系统更灵活。
示例:
typescript
体验AI代码助手
代码解读
复制代码
let num: number = 10; num = "string"; // 编译错误 let anyValue: any = 10; anyValue = "string"; // 允许
4. 访问修饰符
Java 提供 public、private、protected、包级等访问控制,成员默认包级可见。
示例:
java
体验AI代码助手
代码解读
复制代码
public class Person { private String name; protected int age; String address; // 包级可见 public void sayHello() {} }
TypeScript 仅有 public、private、protected,成员默认 public。
示例:
typescript
体验AI代码助手
代码解读
复制代码
class Person { private name: string; protected age: number; public address: string; sayHello() {} }
5. 异常处理
Java 强制异常处理(checked exception),需用 try-catch 或 throws 声明。
示例:
java
体验AI代码助手
代码解读
复制代码
public void readFile() throws IOException { // ... } try { readFile(); } catch (IOException e) { e.printStackTrace(); }
TypeScript 仅有运行时异常,不强制处理。
示例:
typescript
体验AI代码助手
代码解读
复制代码
function readFile() { throw new Error("IO error"); } try { readFile(); } catch (e) { console.error(e); }
6. 泛型与继承
Java 泛型为类型擦除,运行时不可用类型信息,仅支持单继承。
示例:
java
体验AI代码助手
代码解读
复制代码
List<String> list = new ArrayList<>(); // 运行时无法获取泛型类型 class Animal {} class Dog extends Animal {} // 单继承
TypeScript 泛型为编译期类型,支持多接口实现。
示例:
typescript
体验AI代码助手
代码解读
复制代码
function identity<T>(arg: T): T { return arg; } interface Animal {} interface Pet {} class Dog implements Animal, Pet {} // 多接口实现
7. 枚举
Java 枚举类型功能强大,可定义方法和属性。
示例:
java
体验AI代码助手
代码解读
复制代码
enum Color { RED, GREEN, BLUE; public String hex() { switch(this) { case RED: return "#FF0000"; case GREEN: return "#00FF00"; case BLUE: return "#0000FF"; default: return "#000000"; } } }
TypeScript 枚举仅为一组命名常量。
示例:
typescript
体验AI代码助手
代码解读
复制代码
enum Color { Red = "#FF0000", Green = "#00FF00", Blue = "#0000FF" }
8. 接口与抽象类
Java 接口可定义默认方法,抽象类可包含实现。
示例:
java
体验AI代码助手
代码解读
复制代码
interface Animal { void speak(); default void sleep() { System.out.println("Sleeping..."); } } abstract class Pet { abstract void play(); void feed() { System.out.println("Feeding..."); } }
TypeScript 接口只定义结构,抽象类可包含实现。
示例:
typescript
体验AI代码助手
代码解读
复制代码
interface Animal { speak(): void; } abstract class Pet { abstract play(): void; feed() { console.log("Feeding..."); } }
9. 注解与装饰器
Java 注解用于元数据和框架扩展。
示例:
java
体验AI代码助手
代码解读
复制代码
@interface MyAnnotation { String value(); } @MyAnnotation("test") public class Demo {}
TypeScript 装饰器用于类、方法、属性的元编程。
示例:
typescript
体验AI代码助手
代码解读
复制代码
function MyDecorator(target: Function) { // ... } @MyDecorator class Demo {}
10. 并发与异步
Java 通过线程和并发库实现多线程。
示例:
java
体验AI代码助手
代码解读
复制代码
class MyTask extends Thread { public void run() { System.out.println("Running in thread"); } } new MyTask().start();
TypeScript 通过 Promise/async/await 实现异步。
示例:
typescript
体验AI代码助手
代码解读
复制代码
async function myTask() { await new Promise(resolve => setTimeout(resolve, 1000)); console.log("Running async"); } myTask();
11. 模块化与依赖管理
Java 使用 package/module 组织代码,依赖通过 Maven/Gradle 管理。 TypeScript 使用 ESModule/CommonJS,依赖通过 npm/yarn 管理。
12. 生态与应用场景
Java 主要用于后端服务、企业应用、Android 移动开发、大数据等。 TypeScript 主要用于前端开发、Node.js 服务、跨平台应用等。
13. 主流开发模式
Java 强调面向对象、设计模式、类型安全。 TypeScript 强调灵活性、类型推断、快速迭代。
14. 知识迁移与协同应用
本文聚焦于帮助 TypeScript 开发者理解 Java 的核心语法和特性,便于知识迁移和技术扩展。实际开发中,Java 和 TypeScript 常常协同应用,例如前端采用 TypeScript,后端采用 Java。通过对比学习,可以更高效地掌握 Java 的开发模式和生态,提升跨技术栈的开发能力。
原文:https://juejin.cn/post/7568385433983811610
更多推荐


所有评论(0)