查看原文
其他

TS 4.9 中的 accessor 到底有啥用?

阿宝哥 全栈修仙之路 2023-02-13

欢迎你阅读 「《重学 TypeScript 3.0》」 系列教程,本系列教程会包含 TypeScript 基础知识、进阶知识、类型体操(精选)、设计模式、核心特性实战和开源项目源码解析 「6」 大专题的内容。

TypeScript 4.9 版本支持了 「auto-accessors(自动访问器)」 新特性,自动访问器的声明方式与类的属性一样,只是它们是使用 accessor 关键字声明。而 TypeScript 5.0 Beta 版本也带来了一个与 「auto-accessors」 相关的 「ClassAutoAccessorDecorator」 装饰器。本文阿宝哥会先介绍自动访问器的相关内容,然后再介绍新的 「ClassAutoAccessorDecorator」 装饰器。

class User {
  accessor name: string;

  constructor(name: string) {
    this.name = name;
  }
}

其实 accessor 自动访问器是语法糖,经过 TypeScript 编译器处理后,会生成一个 ECMAScript 私有类字段[1] 及相应的 getset 访问器。

class User {
    #name_accessor_storage;
    get name() { return this.#name_accessor_storage; }
    set name(value) { this.#name_accessor_storage = value; }
    
    constructor(name) {
        this.name = name;
    }
}

在以上代码中,#name_accessor_storage 是 ECMAScript 私有类字段的语法。那么使用 # 定义的 ECMAScript 私有字段与 private 修饰符定义字段有什么区别呢?

提示:Android 平台 1 元 10 个微豆,iOS 平台 1 元 7 个微豆,购买时可切换平台充值。

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存