假设我们在 2 个单独的文件中有 2 个简单的 TypeScript 类:
- B.ts:
namespace A{
export abstract class ItemBase {
id:number=432;
}
}
- C.ts
///<reference path="B.ts"/>
namespace A{
export class ItemType extends A.ItemBase{}
}
- 并在 Code.ts 中调用代码:
///<reference path="C.ts"/>
let a:A.ItemType=new A.ItemType();
使用卡扣推动后一切正常
但是如果我将 C.ts 文件的名称更改为 AA.ts,我会收到错误消息:
TypeError: Cannot read property "prototype" from undefined. (row 14, file „AA”).
如果我不在 Code.ts 中实例化 ItemType 类,问题甚至会存在。
ts2gas 似乎在代码转译过程中没有考虑extends
关键字,并将输出的 gs 文件设置为对应的 ts 文件顺序。因此,如果我们在扩展类文件之前命名扩展类文件(按字母顺序),我们会得到一个错误。
在开发过程中我是否必须注意 ts 文件名的正确顺序?我是否必须附加某种机制来处理 gs 文件加载顺序?当 gs 文件已经被转译时,这对我来说似乎是多余的。转译过程 (ts2gas) 应该注意以 TypeScript 方式使用的适当的类扩展策略。如果 ts2gas 可以使用原型将 TypeScript 类转换为 JS OOP,为什么它不能正确处理类扩展?
我想有一些更简单更好的方法。