Предположим, у нас есть 2 простых класса TypeScript в 2 отдельных файлах:
namespace A{
export abstract class ItemBase {
id:number=432;
}
}
///<reference path="B.ts"/>
namespace A{
export class ItemType extends A.ItemBase{}
}
///<reference path="C.ts"/>
let a:A.ItemType=new A.ItemType();
Все работает хорошо после нажатия на него с помощью cl asp
Но если я изменю имя файла C .ts на AA.ts, я получу ошибку:
TypeError: Cannot read property "prototype" from undefined. (row 14, file „AA”).
Проблема даже существует если бы я не создавал экземпляр класса ItemType в Code.ts.
Кажется, что ts2gas не учитывает ключевое слово extends
во время переноса кода и устанавливает выходные файлы gs в соответствии с порядком файлов ts. Поэтому, если мы назовем файл расширенного класса перед файлом класса, из которого мы расширяем (в алфавитном порядке), мы получим ошибку.
Должен ли я позаботиться о правильном порядке имен файлов ts во время разработки? Должен ли я прикрепить какой-то механизм, который заботится о порядке загрузки файлов GS? Мне кажется, это излишне, пока файлы gs уже переданы. Процесс переноса (ts2gas) должен позаботиться о правильной стратегии расширения класса, которая использовалась в TypeScript. Если ts2gas может преобразовать класс TypeScript в JS OOP, используя прототипы, почему он не может правильно обрабатывать расширения класса?
Я полагаю, есть какой-то более простой и лучший способ.