Наследование Typescript между модулями CommonJS - Круговые зависимости
Я не могу получить наследование для работы с модулями CommonJS, созданными с использованием машинописного текста 1.0 (tsc
запускается с использованием--module commonjs
)
Это не удается, когда два класса, наследующие один и тот же базовый класс, вызывают друг друга «через» базовый класс.
Кажется, что происходит то, что первый класс импортирует базовый класс, который импортирует второй класс, который также импортирует базовый класс, но последний импорт базового класса не выполняется.
Пример, иллюстрирующий это поведение, приведен ниже.
Что-то в спецификациях Typescript или CommonJS не позволяет мне сделать это, или это ошибка?
=== Пример ===
Это увлекательное программное обеспечение не удалось запуститьLower.test.ts
, То, что он просто пытается достичь, это загрузить слово вLower
который держит его в нижнем регистре, а затем с использованием унаследованныхtoUpper()
метод изBase
класс, преобразует его в верхний регистр, используяUpper
класс (который также наследуетBase
)
Lower.test.ts
import Lower = require('./Lower')
console.log(new Lower('smallcaps').toUpper())
Base.ts
import Upper = require('./Upper')
class Base {
word: string
toUpper(): string {
return new Upper(this.word).word
}
}
export = Base
Upper.ts
import Base = require('./Base')
class Upper extends Base {
constructor(word:string) {
super()
this.word = word.toUpperCase()
}
}
export = Upper
Lower.ts
import Base = require('./Base')
class Lower extends Base {
constructor(word:string) {
super()
this.word = word.toLowerCase()
}
}
export = Lower