什么是 TypeScript 的对象类型?怎么定义对象类型?

2024-08-26 10:17:18 297
TypeScript 的对象类型用于描述 JavaScript 对象的结构,定义对象的属性及其对应的类型。

对象类型的定义

在 TypeScript 中,对象类型可以通过以下两种方式定义:

  1. 使用接口(interface
  2. 使用类型别名(type

1. 使用接口(interface)定义对象类型

接口可以用来定义一个对象的形状,包括属性名和它们的类型。

示例:

interface Person {
    name: string;   // 定义name属性为字符串类型
    age: number;    // 定义age属性为数字类型
    greet(): void;  // 定义greet方法,不返回任何值
}

let person: Person = {
    name: "Alice",
    age: 25,
    greet() {
        console.log(`Hello, my name is ${this.name}.`);
    }
};

person.greet(); // 输出:Hello, my name is Alice.

2. 使用类型别名(type)定义对象类型

类型别名是另一种定义对象类型的方式,和接口类似。

示例:

type Car = {
    brand: string;    // 定义brand属性为字符串类型
    model: string;    // 定义model属性为字符串类型
    year: number;     // 定义year属性为数字类型
};

let myCar: Car = {
    brand: "Toyota",
    model: "Corolla",
    year: 2020
};

console.log(myCar.model); // 输出:Corolla

何时使用接口与类型别名?

  • 接口更适合用于定义对象类型,并且可以通过扩展(extends)来组合多个接口。
  • 类型别名可以用于定义任何类型(包括对象类型、联合类型、元组等),并且可以通过交叉类型(&)来组合多个类型。

扩展对象类型

你可以通过接口的继承或类型别名的交叉类型来扩展对象类型。

示例:接口继承

interface Animal {
    name: string;
}

interface Dog extends Animal {
    breed: string;
}

let myDog: Dog = {
    name: "Buddy",
    breed: "Golden Retriever"
};

示例:类型别名的交叉类型

type Point = {
    x: number;
    y: number;
};

type Point3D = Point & {
    z: number;
};

let point: Point3D = {
    x: 10,
    y: 20,
    z: 30
};

总结

对象类型在 TypeScript 中用于定义对象的结构,确保对象中的属性符合指定的类型。可以使用 interfacetype 来定义对象类型,并根据需求选择合适的方式。