(二)typescript中class类

在 TypeScript 中,你可以使用类(class)来更加精确地定义属性和方法的访问控制。这些包括静态属性/方法、私有属性/方法、公共属性/方法、保护属性/方法,以及继承。下面通过示例来展示这些概念在 TypeScript 中的使用。

1. 静态属性和方法

静态属性和方法属于类本身而不是类的实例。这意味着你可以在不实例化类的情况下直接访问它们。

typescript 复制代码
class MyClass {
  static staticProperty: string = "class level property"; // 静态属性
  static staticMethod(): string { // 静态方法
    return 'I am a static method';
  }
}

console.log(MyClass.staticProperty); // 访问静态属性
console.log(MyClass.staticMethod()); // 调用静态方法

2. 私有属性和方法

私有属性和方法只能在类的内部访问,不允许从外部或任何子类中访问。

typescript 复制代码
class Example {
  private privateProperty: string = "I am private"; // 私有属性

  private privateMethod(): string { // 私有方法
    return 'This is a private method';
  }

  public getPrivateMethod(): string {
    return this.privateMethod(); // 内部访问私有方法
  }
}

const obj = new Example();
console.log(obj.getPrivateMethod()); // 正确访问
// console.log(obj.privateMethod()); // 错误,外部不能访问私有方法
// console.log(obj.privateProperty); // 错误,外部不能访问私有属性

3. 公共属性和方法

公共属性和方法是默认的访问级别,在 TypeScript 中不必显式声明为 public,它们可以从类的内部、实例以及子类中自由访问。

typescript 复制代码
class PublicExample {
  public publicProperty: string = "I am public"; // 公共属性

  public publicMethod(): string { // 公共方法
    return 'This is a public method';
  }
}

const example = new PublicExample();
console.log(example.publicProperty); // 访问公共属性
console.log(example.publicMethod()); // 调用公共方法

4. 保护属性和方法

保护属性和方法可以在类及其子类中访问,但不能从类的外部访问。

typescript 复制代码
class ProtectedExample {
  protected protectedProperty: string = "I am protected"; // 保护属性

  protected protectedMethod(): string { // 保护方法
    return 'This is a protected method';
  }
}

class ChildExample extends ProtectedExample {
  useProtectedMethod(): string {
    return this.protectedMethod(); // 子类访问保护方法
  }
}

const child = new ChildExample();
console.log(child.useProtectedMethod()); // 正确访问
// console.log(child.protectedMethod()); // 错误,外部不能访问保护方法

5. 继承

继承允许一个类从另一个类接收属性和方法,这是重用代码的有效方式。

typescript 复制代码
class Parent {
  public parentMethod(): string {
    return 'Method from Parent';
  }
}

class Child extends Parent {
  public childMethod(): string {
    return 'Method from Child';
  }
}

const childInstance = new Child();
console.log(childInstance.parentMethod()); // 子类实例访问继承的方法
console.log(childInstance.childMethod()); // 子类实例访问自己的方法

通过上述示例,你可以看到在 TypeScript 中如何利用类的特性来进行更细粒度的访问控制。这有助于构建更安全、可维护和模块化的大型应用程序。

相关推荐
特立独行的猫a1 小时前
Windows安装Rust环境 Clang替代GCC MinGW环境LLVM工具链(详细教程)
开发语言·windows·rust·mingw·环境搭建·llvm
m0_720245017 小时前
1543.统计好三元组(简单)
开发语言·算法
To_OC7 小时前
LC 560 和为 K 的子数组:前缀和配哈希表,这对组合我是真的服了
javascript·算法·程序员
叠层归一研究院8 小时前
AGI 系统(八):符号范畴嵌入函子 — SymCat ↪ C_M107 严格化
c语言·开发语言·人工智能·算法·transformer·agi
明朝百晓生8 小时前
Deep RL learning[2026/8]
开发语言·javascript·人工智能
用户938515635079 小时前
ESLint 代码规范完全指南——从 AST 原理到 flat config 逐行解析
javascript·后端·代码规范
weixin-a153003083169 小时前
python-装饰器
开发语言·python
我的xiaodoujiao9 小时前
快速学习Python基础知识详细图文教程17--类型注解和断点调试
开发语言·python·学习·测试工具
kyriewen11 小时前
今年裁了16万技术人——但字节前端岗反而涨了23%
前端·javascript·面试
leoZ23111 小时前
AI 辅助开发的五道坎
开发语言·人工智能·视觉检测·bert·php·超分辨率重建·openvino