gpt4 book ai didi

typescript - TS 非抽象类解释为抽象类

转载 作者:搜寻专家 更新时间:2023-10-30 22:00:43 25 4
gpt4 key购买 nike

我正在尝试实例化一个非抽象类C,它继承自抽象类B(它本身派生自抽象类A),但 Typescript 坚持认为 C 不能实例化,因为它是抽象的。这三个类都是用 ES2015 编写的,包含以下 d.ts 文件:

A.d.ts

declare abstract class A {
constructor(opts?: { opt: boolean});

/* Abstract and concrete methods */
}

B.d.ts

declare abstract class B extends A {
abstract a(): void;
abstract b(foo: string): Promise<Bar[]>;
abstract c(foo: string): Promise<Bar>;
abstract d(foo: string, v: any): Promise<any>;
abstract e(foo: string): Promise<any>;

f(foo: string, bar: number, baz: string): string;
}

C.d.ts

declare class C extends B {
constructor(opts?: { opt: boolean });

a(): void;
b(foo: string): Promise<Bar[]>;
c(foo: string): Promise<Bar>;
d(foo: string, v: any): Promise<any>;
e(foo: string): Promise<any>;

f(foo: string, bar: number, baz: string): string;
}

在另一个项目中,导入C调用new C({ opt: true }),报错Cannot create an instance of the抽象类“C”。 我认为我的声明文件有问题,但我在 SO 或 typescriptlang.org 上找不到任何内容这表明它是什么。我做错了什么?

最佳答案

这原来是声明文件中的拼写错误:在 B.d.ts 中,我有 export as namespace BTypepo; 而不是 export as namespace B; ,这反过来一定让 Typescript 混淆了 C 如何实现 AB 的抽象方法。

关于typescript - TS 非抽象类解释为抽象类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42958721/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com