小编cin*_*mon的帖子

Typescript 生成带有 `#private;` 字段的声明 d.ts 文件

我有一个用 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 …

javascript typescript typescript-typings

7
推荐指数
1
解决办法
734
查看次数