Javascript 在Typescript中扩展抽象类

Javascript 在Typescript中扩展抽象类,javascript,class,typescript,interface,abstract-class,Javascript,Class,Typescript,Interface,Abstract Class,我有接口,实现这个接口的基本抽象类,以及创建基类新实例的Angular组件中的一些属性。这种构造不会在浏览器中给我错误(可能是因为JS可以承受任何东西),但我得到了TSLint错误 TS2511:无法创建抽象类KitCustomizationBase的实例 如果我删除摘要这个词,这个错误就会消失。正如我在TS文档中读到的,抽象类可能包含一些实现的逻辑。有人能解释一下吗 我的界面: export interface KitCustomizationInterface { items: numb

我有接口,实现这个接口的基本抽象类,以及创建基类新实例的Angular组件中的一些属性。这种构造不会在浏览器中给我错误(可能是因为JS可以承受任何东西),但我得到了TSLint错误

TS2511:无法创建抽象类KitCustomizationBase的实例

如果我删除
摘要
这个词,这个错误就会消失。正如我在TS文档中读到的,抽象类可能包含一些实现的逻辑。有人能解释一下吗

我的界面:

export interface KitCustomizationInterface {
  items: number[];
  indexes: number[];
  counter: number;
}
我的基类(在没有构造函数的情况下,我得到了相同的错误):

以及我的组件中的代码:

...
let k: KitCustomizationBase = new KitCustomizationBase([], [], 0);
...
更新 重复标记的注意事项:

  • Angular(由于TS)对接口的工作具有不同的力矩
  • 此外,我们讨论的是谷歌搜索中没有结果的特定TSLint错误
  • 重复标记给出的链接没有提供明确的答案。这更像是一个答案“去读文档”。到底是什么

  • 你所做的事情本身就是一个矛盾。当您将类标记为
    abstract
    时,您特别禁止实例化。然后你去实例化你的课程。你必须下定决心

    • 如果你不想实例化你的类,不要这样做。您必须从现有类派生一个类并实例化它。在TypeScript中,您还可以选择为变量指定一个兼容的对象(称为TypeScript的duck类型)。但是你不需要你的构造函数。你甚至不需要这个类,你的界面会很好
    • 如果你想实例化你的类,不要让它抽象。如果一个抽象类不允许它的实例化,那么它的全部意图就是

    你不能
    new
    一个抽象类,这是
    abstract
    的要点。我也看不到你在扩展抽象类。可能只是在扩展上重复,然后创建新实例?@WeekendMan我给出了那个链接,因为我可以看出你似乎不理解抽象类的概念。@WeekendMan解决方案非常简单。如果您希望类是抽象的,那么这意味着您不希望能够实例化它。这意味着您应该会遇到编译时错误。正如您所怀疑的,缺少运行时错误也是由于JavaScript没有抽象类的概念。决定您想要的是抽象类还是具体类,并相应地编写代码。谢谢您的帮助。不错+1用于提及由普通对象实现的接口。吻
    ...
    let k: KitCustomizationBase = new KitCustomizationBase([], [], 0);
    ...