typescript - TypeScript 定义文件中#private 的目的是什么?
问题描述
在 TypeScript 4.0.5 中,当转译一个使用 ECMAScript 私有字段的类时,如下所示:
export class Test {
#foo = 'foo';
#bar = 6;
concat() {
return this.#foo + this.#bar;
}
}
结果是这样的:
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, privateMap) {
if (!privateMap.has(receiver)) {
throw new TypeError("attempted to get private field on non-instance");
}
return privateMap.get(receiver);
};
var _foo, _bar;
export class Test {
constructor() {
_foo.set(this, 'lol');
_bar.set(this, 6);
}
concat() {
return __classPrivateFieldGet(this, _foo) + __classPrivateFieldGet(this, _bar);
}
}
_foo = new WeakMap(), _bar = new WeakMap();
定义文件是这样的:
export declare class Test {
#private;
concat(): string;
}
来这里的目的是#private
什么?它只是删除了 TypeScript 的向后兼容性。该#
字符将使旧 TypeScript 版本中的解析失败,并且不会在 IDE 中带来任何内容:
当我们尝试使用该#private
字段时,它没有显示任何有用的信息:
我在这里找到了相应的提交:https ://github.com/microsoft/TypeScript/pull/30829/commits/3f8b49012636a365762598847a463f1cf189a59f但评论和提交消息都没有帮助我理解。
解决方案
推荐阅读
- sql - 如何在子表的外键列中分配新创建的父ID时,将父子数据从一个数据库复制到另一个数据库?
- javascript - 是否可以将 hasClass() 与 querySelectorAll() 一起使用?
- c++ - 拆分窗口Qt
- flutter - 无法安装flutter_mapbox_navigation-0.0.26
- java - 我必须如何调整 json 路径才能使我的测试成功?
- php - TCPDF 如何设置 Zebra 打印机不干胶标签尺寸 2 英寸 X 1 英寸的页面尺寸
- javascript - 如何在使用 Javascript 加载页面期间更改按钮的切换状态?
- javascript - 如何使用我自己的格式将 JSON 对象转换为 javascript 文件
- swift - 在 do-try-catch 中解码到另一个类会产生编译错误
- c# - 在 ASP.NET Core 中首次登录时强制重定向到另一个页面