TypeScript 不只给变量加类型,也能描述对象结构、字典映射和面向对象模型。
对象类型
const user: { name: string; age: number } = {
name: "Alice",
age: 25,
};复杂对象通常会提取成 type 或 interface。
interface User {
name: string;
age: number;
}Record 字典
Record<K, V> 用来表示键值映射。
const userAges: Record<string, number> = {
Alice: 25,
Bob: 30,
};也可以限制 key 的范围。
type UserName = "Alice" | "Bob" | "Carol";
const scores: Record<UserName, number> = {
Alice: 90,
Bob: 88,
Carol: 95,
};索引签名
interface ScoreMap {
[key: string]: number;
}索引签名适合动态 key,但要注意它允许任何字符串 key。
类
class Person {
constructor(
public name: string,
private age: number,
) {}
greet() {
return `Hello, ${this.name}`;
}
}常见访问修饰符:
public:外部可访问private:只在类内部可访问protected:类内部和子类可访问
继承与重写
class Student extends Person {
override greet() {
return `Student: ${this.name}`;
}
}抽象类
抽象类不能直接实例化,通常用来定义一组子类必须实现的能力。
abstract class Animal {
abstract speak(): string;
}
class Dog extends Animal {
speak() {
return "woof";
}
}抽象类适合有共享实现和强约束的场景。