Ich habe ein Problem, das meiner Meinung nach durch eine zirkuläre Abhängigkeit verursacht wird. Nach einigen umfangreichen Recherchen konnte ich keine Lösung finden. Es sieht im Zusammenhang mit diesem Problem: TypeError: b is undefined in __extends in TypeScript, aber es hat mir nicht geholfen.Kreisförmige Abhängigkeit mit Angular 2 und SystemJS
Ich konnte das Problem in this plunker vereinfachen.
Grundsätzlich gibt es 3 Klassen:
- die Klasse
A
, die ein Array vonA
- die Klasse
B
enthält, die ausA
- die Klasse erbt
F
, eine Fabrik, die eine schaffenA
oderB
abhängig von einem Wert
T Der Zweck davon ist die Handhabung einer Parameterliste, die dynamisch sein kann (jeder A
ist ein Parameter und kann ein Array sein) und wobei B
eine Spezialisierung von A
ist, um Dateien zu handhaben. Ich habe versucht, das Werk zu entfernen, aber mit nur A
und B
ich immer noch den gleichen Fehler:
TypeError: b is undefined Error loading http://localhost:3000/app/main.js
Hier ist der Code von a.ts
import { F } from './f';
export class A {
children: A[]
constructor(hasChildren: boolean = false) {
if (hasChildren) {
for (var i = 0 ; i < 10 ; ++i) {
let isB = (Math.random() * 2) > 1;
this.children.push(F.createObject(isB))
}
}
}
}
b.ts
import { A } from './a';
export class B extends A {
}
und f.ts
import { A } from './a'
import { B } from './b'
export class F {
static createObject(isB: boolean): A {
if (isB) {
return new B
} else {
return new A
}
}
}
Wo ist die Linie, die die 'b' in der Fehlermeldung erwähnt enthalten? –
In der JavaScript-Konsole. Wenn die Klassen "toto" und "tata" heißen, lautet die Fehlermeldung immer noch "TypeError: b ist undefined Fehler beim Laden von http: // localhost: 3000/app/main.js" – Sunder
Der Plunker-Link funktioniert nicht mich. –