Skip to content

TypeScript · 01 语言基础 ​

这不是从零开始的 TS/JS 教程,而是给 已有 Java 经验 的人用的快速迁移 + 长期速查。
这里的语言是 TypeScript;跑在 Node.js(或浏览器 / Electron)上。
事件循环、Node 运行时细节 → 02 核心能力;Express / Nest → 03 框架与生态。


01 变量与类型 ​

java
String name = "Meng";
int age = 30;
var city = "Luoyang";
final int MAX = 100;
String empty = null;
int n = Integer.parseInt("42");
ts
let name: string = "Meng";
const age = 30;                 // 优先 const;需要再赋再用 let
const MAX = 100;
let empty: string | null = null;
let maybe: string | undefined;  // 未赋值常见为 undefined
const n = Number.parseInt("42", 10);
// 或 const n = Number("42")
JavaTypeScript
Stringstring
int / Integernumber(无 int/float 分立)
booleanboolean
nullnull 和 undefined(两套空)
final / 不可变局部const
var(Java 10+)let + 类型推断

打开 strict;少用 any。外部 JSON 先当 unknown 再收窄(进阶 → 02)。


02 字符串 ​

java
String s = "hi " + name;
String f = String.format("hi %s", name);
String multi = """
    line1
    line2
    """;
ts
const s = "hi " + name;
const f = `hi ${name}`;          // template literal(首选)
const multi = `line1
line2`;

常用:s.length、s.trim()、s.split(",")、s.includes(...)、arr.join(",")。


03 数组与集合 ​

JavaTypeScript注意
ListArray / T[]字面量 [1, 2]
Map对象 { [k: string]: V } 或 Map普通业务 DTO 多用对象;需要非字符串 key / 插入序 API 再用 Map
SetSetnew Set([1,2])
java
List<String> list = new ArrayList<>();
list.add("a");
Map<String, Integer> map = new HashMap<>();
map.put("a", 1);
Set<String> set = new HashSet<>();
ts
const list: string[] = ["a"];
list.push("b");

const map: Record<string, number> = { a: 1 };
map.b = 2;
// 或 const map = new Map<string, number>([["a", 1]]);

const set = new Set<string>(["a", "b"]);
set.add("c");

不等价处: JS 数组可稀疏、可混类型(TS 用泛型约束);对象 key 基本是 string/symbol。不要把 Map 与普通对象当成完全同一回事。


04 条件与循环 ​

java
if (x > 0) { ... } else { ... }
switch (x) { case 1: ...; default: ...; }
for (int i = 0; i < n; i++) { ... }
for (String s : list) { ... }
while (ok) { ... }
ts
if (x > 0) {
  ...
} else if (x === 0) {
  ...
} else {
  ...
}

switch (x) {
  case 1:
    ...
    break;
  default:
    ...
}

for (let i = 0; i < n; i++) { ... }
for (const s of list) { ... }       // 推荐
list.forEach((s) => { ... });
while (ok) { ... }
// break / continue 同语义

比较:日常用 === / !==,少用 ==(会类型转换)。
&& || ! 与 Java 同形;还有 ??(空值合并)、?.(可选链)。


05 函数 ​

java
int add(int a, int b) { return a + b; }
ts
function add(a: number, b: number = 0): number {
  return a + b;
}

function sumAll(...nums: number[]): number {
  return nums.reduce((a, b) => a + b, 0);
}

const add2 = (x: number, y: number) => x + y;

function apply(n: number, fn: (x: number) => number) {
  return fn(n);
}
点TypeScript
定义function / 箭头函数
默认参数支持
可变参数...rest
匿名函数箭头函数为主
函数作参数一等公民

async/await、高阶中间件心智 → 02;此处先会同步函数签名即可。


06 类与对象 ​

基础够用;继承体系、抽象类、高级类型 → 02。

java
public class User {
  private String name;
  public User(String name) { this.name = name; }
  public String getName() { return name; }
}
ts
class User {
  constructor(private name: string) {}

  getName(): string {
    return this.name;
  }
}

const u = new User("Meng");

日常后端更多用 interface + 字面量对象 描述 DTO,而不是处处 class:

ts
interface UserDto {
  name: string;
  age: number;
}

const dto: UserDto = { name: "Meng", age: 30 };

07 模块与依赖 ​

JavaTypeScript(Node)
package / importimport / export
Mavennpm / pnpm / yarn(package.json)
jar编译到 dist/ 的 JS
ts
import fs from "node:fs";
import { add } from "./math.js";   // 视项目 ESM/CJS 约定
export function hello() { ... }

目标:看懂 package.json 依赖与 import 从哪来。完整工程化、ESM/CJS 深坑 → 04 工程实践。


08 Java → TypeScript 语法速查 ​

JavaTypeScript
System.out.println(x)console.log(x)
nullnull / undefined
ListT[] / Array<T>
MapRecord<K,V> / Map
SetSet
&& || !同符号
==(值)===
for (int i=0;i<n;i++)for (let i=0;i<n;i++)
for (T x : list)for (const x of list)
String.format`hi ${name}`
list.add(x)list.push(x)
map.put(k,v)obj[k]=v / map.set
new User()new User()
thisthis(箭头函数小心绑定)
final 局部const
Integer.parseIntNumber.parseInt(s, 10)
packageimport / export
分号可选(项目统一即可)
OptionalT | null / T | undefined

下一篇:02 核心能力