TypeScript在线调试 (opens new window)

# 1.什么是TypeScript

Typescript 是一个强类型的 JavaScript 超集,支持ES6语法,支持面向对象编程的概念,如类、接口、继承、泛型等。
Typescript并不直接在浏览器上运行,需要编译器编译成纯Javascript来运行。

# 2.基本类型​

let num: number = 42;
let str: string = "Hello";
let bool: boolean = true;
let arr: number[] = [1, 2, 3];
let tuple: [string, number] = ["Alice", 25]; // 元组
let anyVar: any = "anything"; // 任意类型
let unknownVar: unknown; // 比 any 更安全
let voidVar: void = undefined; // 无返回值
let nullVar: null = null;
let undefinedVar: undefined = undefined;
1
2
3
4
5
6
7
8
9
10

TypeScript 能自动推断变量类型:

let x = 10; // 推断为 number
x = "hello"; // ❌ 错误
1
2

# 3.​接口(Interface)与类型别名(Type Alias)​

  • 接口​
interface User {
  name: string;
  age?: number; // 可选属性
  readonly id: number; // 只读属性
  [key: string]: any; // 索引签名(允许额外属性)
}

const user: User = { name: "Alice", id: 1 };
1
2
3
4
5
6
7
8
  • 类型别名​
type Point = {
  x: number;
  y: number;
};

type ID = number | string; // 联合类型
1
2
3
4
5
6
  • 区别​
​​Interface​ ​​Type Alias​
可扩展(extends) 不可扩展
支持声明合并(同名合并) 不支持
适合对象类型) 适合联合类型、复杂类型

# 常见问题

# any 和 unknown 的区别?

any 会绕过类型检查,unknown 必须进行类型断言或收窄

# 如何避免 any 滥用?

  • 使用更精确的类型(如联合类型、泛型)。
  • 启用 tsconfig.json 中的 noImplicitAny

# interface 和 type 如何选择?​​

需要扩展或合并时用 interface,复杂类型用 type

lastUpdate: 5/5/2025, 8:38:10 AM