Наследование 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

Ответы на вопрос(2)

Ваш ответ на вопрос