Ошибка расширения машинописного текста: «TypeError: Object.setPrototypeOf: ожидал объект или ноль, получил неопределенный» - PullRequest
0 голосов
/ 09 июня 2018

В моем приложении 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

Я искал околои нашел этот вопрос , который, кажется, относится к той же проблеме.Если я правильно понимаю, со страницы этой проблемы , похоже, что ошибка была исправлена ​​в версии машинописи 2.4.0 или 2.4.1.
Я проверил свой package.json и в "devDependencies"«У меня "typescript": "~2.4.2".
Так что я не понимаю, почему у меня все еще есть эта ошибка.

Я неправильно понял, и эта ошибка не может быть исправлена ​​в машинописи 2.4.2?Если да, есть ли обходной путь, чтобы заставить мой код работать?
Или эта ошибка может быть откуда-то еще?

1 Ответ

0 голосов
/ 09 июня 2018

просто измените расположение ваших классов:

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

update :

ok, в вашем 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();
  }
}

в вашем приложении.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

...