📌  相关文章
📜  TypeScript-对象(1)

📅  最后修改于: 2023-12-03 15:20:43.549000             🧑  作者: Mango

TypeScript-对象

TypeScript 是一种由微软开发的语言,是 JavaScript 的一个超集,允许你写出更加结构化和可维护的代码。

在 TypeScript 中,对象是指具有属性和方法的实例,可以使用对象字面量或者构造函数来创建。

对象字面量

对象字面量是指使用大括号 {} 包裹属性和值的一种对象创建方式。

const person = {
  name: 'Tom',
  age: 18,
  sayHello: function() {
    console.log(`Hello, my name is ${this.name}.`);
  }
};

在 TypeScript 中,你可以使用一个 interface 来描述对象的结构,从而提高代码的可读性和可维护性。

interface IPerson {
  name: string;
  age: number;
  sayHello: () => void;
}

const person: IPerson = {
  name: 'Tom',
  age: 18,
  sayHello: function() {
    console.log(`Hello, my name is ${this.name}.`);
  }
};
构造函数

使用构造函数创建一个对象,通常使用 class 关键字来定义一个类,然后使用 new 关键字来创建类的实例。

class Person {
  name: string;
  age: number;
  constructor(name: string, age: number) {
    this.name = name;
    this.age = age;
  }
  sayHello() {
    console.log(`Hello, my name is ${this.name}.`);
  }
}

const person = new Person('Tom', 18);

在 TypeScript 中,你可以使用 interface 来定义一个类的结构。

interface IPerson {
  name: string;
  age: number;
  sayHello: () => void;
}

class Person implements IPerson {
  name: string;
  age: number;
  constructor(name: string, age: number) {
    this.name = name;
    this.age = age;
  }
  sayHello() {
    console.log(`Hello, my name is ${this.name}.`);
  }
}

const person = new Person('Tom', 18);
索引签名

在 TypeScript 中,你可以使用索引签名来定义一个对象可以包含任意属性。

interface IObj {
  [key: string]: any;
}

const obj: IObj = {
  name: 'Tom',
  age: 18,
  gender: 'male'
};
只读属性

在 TypeScript 中,你可以使用 readonly 关键字将一个属性设置为只读属性,只能在创建对象时进行赋值。

interface IPerson {
  readonly name: string;
  age: number;
  sayHello: () => void;
}

const person: IPerson = {
  name: 'Tom',
  age: 18,
  sayHello: function() {
    console.log(`Hello, my name is ${this.name}.`);
  }
};

person.name = 'Jerry'; // Error: Cannot assign to 'name' because it is a read-only property.
结论

通过 TypeScript,你可以使用 interface 来描述对象的结构,从而提高代码的可读性和可维护性。同时,TypeScript 的类型系统可以帮助你在编译阶段发现代码中的错误,提升了代码的可靠性和可维护性。