收藏146

阅读3085

更新时间2025-08-12

成员:类型

类的成员(属性和方法)使用类型注解进行类型化,类似于变量。

实例

class Person {
  name: string;
}

const person = new Person();
person.name = "Jane";

成员:可见性

类成员还可以被赋予特殊的修饰符,这些修饰符会影响其可见性。

TypeScript 中主要有三个可见性修饰符。

  • public - (默认)允许从任何地方访问类成员
  • private - 仅允许从类内部访问类成员
  • protected - 允许从类本身和任何继承它的类中访问类成员,这在下面的继承部分中有介绍

实例

class Person {  
  private name: string;  
  
  public constructor(name: string) {  
    this.name = name;  
  }  
  
  public getName(): string {  
    return this.name;  
  }  
}  
  
const person = new Person("Jane");  
console.log(person.getName()); // 由于 name 是私有的,因此无法从类外部访问 person.name

类中的 this 关键字通常指的是类的实例。在此处阅读更多有关 this 的信息。

参数属性

TypeScript 提供了一种在构造函数中定义类成员的便捷方式,方法是在参数中添加可见性修饰符。

实例

class Person {  
  // name 是一个私有成员变量  
  public constructor(private name: string) {}  
  
  public getName(): string {  
    return this.name;  
  }  
}  
  
const person = new Person("Jane");  
console.log(person.getName());

只读

与数组类似,readonly 关键字可以防止类成员被更改。

实例

class Person {  
  private readonly name: string;  
  
  public constructor(name: string) {  
    // 名称在初始定义后无法更改,这必须在声明时或在构造函数中进行。  
    this.name = name;  
  }  
  
  public getName(): string {  
    return this.name;  
  }  
}  
  
const person = new Person("Jane");  
console.log(person.getName());

继承:实现

接口(此处介绍)可用于通过 implements 关键字定义类必须遵循的类型。

实例

interface Shape {
  getArea: () => number;
}

class Rectangle implements Shape {
  public constructor(protected readonly width: number, protected readonly height: number) {}

  public getArea(): number {
    return this.width * this.height;
  }
}

一个类可以通过在 implements 后列出每一个接口,并用逗号分隔,来实现多个接口,如下所示:

class Rectangle implements Shape, Colored {

继承:扩展

类可以通过 extends 关键字相互继承。一个类只能扩展一个其他类。

实例

interface Shape {
  getArea: () => number;
}

class Rectangle implements Shape {
  public constructor(protected readonly width: number, protected readonly height: number) {}

  public getArea(): number {
    return this.width * this.height;
  }
}

class Square extends Rectangle {
  public constructor(width: number) {
    super(width, width);
  }

  // getArea 从 Rectangle 继承
}

重写

当一个类扩展另一个类时,它可以替换父类中具有相同名称的成员。

较新版本的 TypeScript 允许使用 override 关键字显式标记这一点。

实例

interface Shape {  
  getArea: () => number;  
}  
  
class Rectangle implements Shape {  
  // 使用 protected 修饰符的这些成员允许从继承自此类的类(如 Square)进行访问  
  public constructor(protected readonly width: number, protected readonly height: number) {}  
  
  public getArea(): number {  
    return this.width * this.height;  
  }  
  
  public toString(): string {  
    return `Rectangle[width=${this.width}, height=${this.height}]`;  
  }  
}  
  
class Square extends Rectangle {  
  public constructor(width: number) {  
    super(width, width);  
  }  
  
  // 这个 toString 替换了 Rectangle 的 toString  
  public override toString(): string {  
    return `Square[width=${this.width}]`;  
  }  
}

默认情况下,当重写方法时,override 关键字是可选的,它仅有助于防止意外重写不存在的方法。使用 noImplicitOverride 设置来强制在重写时使用它。

抽象类

类的编写方式可以允许它们用作其他类的基类,而不必实现所有成员。这是通过使用 abstract 关键字来完成的。未实现的成员也使用 abstract 关键字。

实例

abstract class Polygon {
  public abstract getArea(): number;

  public toString(): string {
    return `Polygon[area=${this.getArea()}]`;
  }
}

class Rectangle extends Polygon {
  public constructor(protected readonly width: number, protected readonly height: number) {
    super();
  }

  public getArea(): number {
    return this.width * this.height;
  }
}

抽象类不能直接实例化,因为它们没有实现所有成员。

相关

视频

RELATED VIDEOS

更多

免费

Web前端开发极速入门
初级 Web前端开发极速入门

219920次学习

收藏

免费

前端入门_HTML5
初级 前端入门_HTML5

616946次学习

收藏

免费

30分钟学会网站布局
初级 30分钟学会网站布局

238440次学习

收藏

免费

CSS视频教程-玉女心经版
初级 CSS视频教程-玉女心经版

393054次学习

收藏

免费

独孤九贱(1)_HTML5视频教程

免费

独孤九贱(6)_jQuery视频教程

免费

独孤九贱(7)_Bootstrap视频教程

免费

独孤九贱(2)_CSS视频教程
初级 独孤九贱(2)_CSS视频教程

229605次学习

收藏

科技资讯

更多

精选课程

更多
前端入门_HTML5
前端入门_HTML5

共29课时

61.7万人学习

CSS视频教程-玉女心经版
CSS视频教程-玉女心经版

共25课时

39.3万人学习

JavaScript极速入门_玉女心经系列
JavaScript极速入门_玉女心经系列

共43课时

70.9万人学习

独孤九贱(1)_HTML5视频教程
独孤九贱(1)_HTML5视频教程

共25课时

61.6万人学习

独孤九贱(2)_CSS视频教程
独孤九贱(2)_CSS视频教程

共22课时

23万人学习

独孤九贱(3)_JavaScript视频教程
独孤九贱(3)_JavaScript视频教程

共28课时

33.9万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时

125万人学习

关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号