我有一个用 Typescript 编写的库,它分布在 2 个文件中:一个编译的 ECMAScript-2015 兼容 Javascript 文件index.js和一个 Typescript 声明文件index.d.ts。我的目标是让 Javascript 和 Typescript 开发人员都可以访问库(以便他们具有正确的类型和自动完成功能)。
最近我升级到 Typescript 3.9.7,并决定重构我的代码以使用新的私有类字段声明,该声明利用#sigil 而不是 Typescript 的private关键字。
令我惊讶的是,index.d.ts由于#private;在我的课程中包含该成员,我的文件与旧的 Typescript 版本不兼容。
这是生成旧声明文件的旧 Typescript 代码与生成新的不兼容声明文件的新重构 Typescript 代码之间的比较。使用private关键字的旧代码:
// index.ts
class MyClass {
private field1: string = "foo";
private field2: string = "bar";
constructor() {
console.log(this.field1, this.field2);
}
}
// generated index.d.ts
declare class MyClass {
private field1;
private field2;
constructor();
}
Run Code Online (Sandbox Code Playgroud)
使用#sigil …