如何使用私有构造函数扩展类?

问题描述 投票:0回答:1

我有一个来自库的类,其中有一个需要扩展的私有构造函数(以在单元测试中使用)。如果我尝试扩展该类,TypeScript 会抱怨:“无法扩展类‘GuildMember’。类构造函数被标记为私有。”我如何扩展此类或使构造函数不是私有的?

// The parent class
export class GuildMember extends PartialTextBasedChannel(Base) {
    private constructor()
}

// The test class
class MockGuildMember extends GuildMember {
    constructor() {
        super()
    }
}

我的目标是纯粹用 TypeScript 实现这一点,保留尽可能多的类型检查。我知道这在 JavaScript 中已经是可能的了。

typescript inheritance
1个回答
0
投票

恶心,但它有效(而且我找不到任何其他方法)。

// @ts-expect-error Extending private class for mocking
export default class MockGuildMember extends GuildMember {
    constructor() {
        super()
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.