Я пытаюсь построить библиотеку свободно-API в машинописи и у меня есть 2 классов, в отдельных файлах, которые ссылаются друг на друг следующим образом:Перекрестные ссылки между родителем и ребенком классом
a.ts
import * as b from "./b"
export abstract class A {
static create(n: number) : A {
return new b.B(n);
}
}
b.ts
import * as a from "./a"
export class B extends a.A {
constructor(n: number) {
super();
}
}
Мое приложение:
app.ts
import * as a from "./a"
a.A.create(1);
Я создал Visual Studio код для запуска этого на узле локально, но я получаю сообщение «Не удается прочитать прототип на неопределенное» на этой линии сгенерированных b.js:
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
Есть ли способ решить эту циклическую зависимость инициализации?
** Редактировать **
Единственный способ решения проблемы я нашел поставить B в том же файле, как A (B не должны быть экспортированы в любом случае).
Моя проблема заключается в том, что будут классы C, D, E и т. Д., Что делает A.ts очень долго и трудно поддерживать.
См. Также: http://stackoverflow.com/questions/14156414/cross-referencing-with-extended-classes-in-typescipt – Paleo
Да, видел это, но старый вопрос и ответ были бесполезны. – akarnokd