Javascript 无法在angular中创建抽象类的实例,但在JS中工作正常

Javascript 无法在angular中创建抽象类的实例,但在JS中工作正常,javascript,angular,http,yfiles,Javascript,Angular,Http,Yfiles,嗨,团队我有一个很小的问题,我有以下代码: constructor(private mapper: any, private applyCallback: (arg0: INode) => void) { super() /** @type {GanttMapper} */ this.mapper = new GanttMapper(datamodel); /** @type {function(INode):void} */ this.applyCallback = app

嗨,团队我有一个很小的问题,我有以下代码:

constructor(private mapper: any, private applyCallback: (arg0: INode) => void) {
super()

  /** @type {GanttMapper} */
  this.mapper = new GanttMapper(datamodel);
/** @type {function(INode):void} */
  this.applyCallback = applyCallback;

// create the dummy node
  this.dummyNode = new SimpleNode();
  // switch off the default template
  //type RouterClass = typeof ;
  //interface RouterDerived extends RouterClass { }
  console.log("routerClass");
  this.template = new IVisualTemplate({
      createVisual() {
          return null;
      },
      updateVisual() {
          return null;
      }
 });}
但在这一部分:

this.template = new IVisualTemplate({
      createVisual() {
          return null;
      },
      updateVisual() {
          return null;
      }
  });
im有一个错误,错误是:无法创建abstrac类的实例 在JS中,这段代码运行良好,但我试图在angular中迁移它,但不起作用

我读了同样问题的另一部分,但我不能解决它。。。。。。 我尝试了所有的重播技巧,但都不起作用。 谢谢大家

{
  createVisual() {
    return null;
  },
  updateVisual() {
    return null;
  }
}
这不是有效的JavaScript,请重试

{
  createVisual: () => {
    return null;
  },
  updateVisual: () => {
    return null;
  }
}
这不是有效的JavaScript,请重试

{
  createVisual: () => {
    return null;
  },
  updateVisual: () => {
    return null;
  }
}

以下是IVisualTemplate的代码

下面是IVisualTemplate的代码,这是因为Angular(或者说TypeScript)比JavaScript更严格。您可以在JavaScript中执行一些无法在TypeScript定义文件中正确表达的操作,而不会削弱类型检查。 这就是其中之一。它将在运行时工作,但TypeScript编译器不理解此功能,并将警告您不要使用无法识别的构造

这是类库独有的一个特性,称为

委员会还指出:

TypeScript中的快速接口实现
TypeScript.d.ts文件不包含允许快速接口实现的类型。它们仍然在运行时工作,但是TypeScript编译器仍然会产生错误。要解决此问题,您可以告诉编译器忽略有问题的行,或者使用接口的匿名实现:

这不需要
ts ignore
并适用于所有接口:如果接口中只有一个方法,则只需将其实现传递给接口对象上的
。create
方法。如果有更多的成员,则需要通过带有成员名称的选项对象传入这些成员。typescript定义文件现在为这个用例提供了完整的完成。

这是因为Angular(或者说typescript)比JavaScript更严格。您可以在JavaScript中执行一些无法在TypeScript定义文件中正确表达的操作,而不会削弱类型检查。 这就是其中之一。它将在运行时工作,但TypeScript编译器不理解此功能,并将警告您不要使用无法识别的构造

这是类库独有的一个特性,称为

委员会还指出:

TypeScript中的快速接口实现
TypeScript.d.ts文件不包含允许快速接口实现的类型。它们仍然在运行时工作,但是TypeScript编译器仍然会产生错误。要解决此问题,您可以告诉编译器忽略有问题的行,或者使用接口的匿名实现:


这不需要
ts ignore
并适用于所有接口:如果接口中只有一个方法,则只需将其实现传递给接口对象上的
。create
方法。如果有更多的成员,则需要通过带有成员名称的选项对象传入这些成员。typescript定义文件现在为这个用例提供了完整的完成。

nooo不起作用,我有同样的错误,无法创建抽象类的实例,但我需要将代码迁移到Angulari。如果IVisualTemplate是一个接口,那么您不能对它调用new,只需将我答案中的对象分配给模板。我如何才能做到这一点?当然这是有效的(现代)EcmaScript 2015。将其粘贴到浏览器的控制台中,然后自己查看。它被称为对象创建的速记:nooo不起作用,我也有同样的错误,无法创建抽象类的实例,但我需要将代码迁移到angularIf IVisualTemplate是一个接口,那么你不能在它上调用new,只需在我的答案中将对象分配到template。我怎么做?当然这是有效的(现代的)EcmaScript 2015。将其粘贴到浏览器的控制台中,然后自己查看。它被称为对象创建的速记:我在一个有Java源代码的网站上发现了这个类
IVisualTemplate
,但是为什么要在JavaScript中使用Java代码呢?超级调用必须提供基类的所有参数。构造函数不是继承的。请看:Nikolai,请提供
IVisualTemplate
code我不能在这里发布我在一个有Java源代码的网站上找到了这个类
IVisualTemplate
,但是为什么你要在JavaScript中使用Java代码呢?超级调用必须提供基类的所有参数。构造函数不是继承的。请看:请Nikolai,提供
IVisualTemplate
code我不能在这里发布,为什么你添加了一个不可读的图片作为答案?我看不懂。你为什么要添加一个不可读的图片作为答案?我看不懂。
const customHitTestable = IHitTestable.create((context, location) => location.x > 25)