类扩展打字稿错误:“TypeError:Object.setPrototypeOf:期望一个对象或null,未定义”

时间:2018-06-09 11:28:50

标签: angular typescript ionic2

在我的ionic3应用程序中,我有以下几段代码:

@Injectable() // I tried also without this @Injectable and got the same error
export class M_someClass {
  constructor () {

  }

  method1 () { console.log("method1 used") }

}

@Injectable()
export class M_otherClass extends M_someClass {

  callMethod1 () {
    this.method1()
  }

}

当我尝试运行我的应用时,出现以下错误:TypeError: Object.setPrototypeOf: expected an object or null, got undefined

我搜索了这个,发现this question似乎与同一个问题有关。如果我理解正确,from this issue page,似乎已在2.4.0或2.4.1版本的打字稿中修复了该错误。
我检查了我的package.json,在“devDependencies”中我得到了"typescript": "~2.4.2" 所以我不明白为什么我仍然有这个错误。

我是否误解了这个错误可能无法在打字稿2.4.2中修复?如果是,是否有任何解决方法使我的代码工作?
或者那个错误可能来自其他地方?

1 个答案:

答案 0 :(得分:0)

只需改变课程安排:

import { Component } from '@angular/core';

class M_otherClass  {
  constructor(){

  }

  test(){
    console.log('test')
  }

}


@Component({
  selector: 'my-app',
  templateUrl: './app.component.html',
  styleUrls: [ './app.component.css' ]
})
export class AppComponent extends M_otherClass  {
  constructor(){
    super();
    this.test();
  }

} 

检查此stackblitz

<强>更新

好的,在 service.ts

import { Injectable } from '@angular/core';

@Injectable()
class ParentService{
  constructor(){}
  get(){console.log('test')}
}

@Injectable()
class ChildService extends ParentService{
  constructor (){
    super();
  }
}

export {
    ChildService,
    ParentService
}
使用服务的组件中的

import { Component } from '@angular/core';
import { ChildService } from './app.service.ts'


@Component({
  selector: 'my-app',
  templateUrl: './app.component.html',
  styleUrls: [ './app.component.css' ]
})
export class AppComponent {
  constructor(public childService:ChildService){
    this.childService.get();
  }
}
app.module.ts

中的

import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { FormsModule } from '@angular/forms';
import { AppComponent} from './app.component';
import { HelloComponent } from './hello.component';
import { ChildService, ParentService } from './app.service.ts'

@NgModule({
  imports:      [ BrowserModule, FormsModule ],
  declarations: [ AppComponent, HelloComponent ],
  bootstrap:    [ AppComponent ],
  providers: [ ChildService, ParentService]
})
export class AppModule { }

检查此工作stackblitz