我目前有一个很大的打字稿文件,我想拆分它。有一些函数和变量仅在文件中使用,以及一些类。目前看起来是这样的:
var numbers = [1, 2, 3];
function formatDate() {...}
class Widget { ... }
class Section { ... }
我尝试将其放入模块中并将其拆分为几个文件:
//Widget.ts
module ReportTemplate {
export class Widget { ... }
}
//Section.ts
module ReportTemplate {
export class Section { ... }
}
//ReportTemplate.ts
/// <reference path="Widget.ts"/>
/// <reference path="Section.ts"/>
module ReportTemplate {
var numbers = [1, 2, 3];
function formatDate() { ... }
}
我希望这相当于我的原始文件,但包装在一个模块中,但我发现的是Widget
and Section
无法访问numbers
and formatDate
.
我不确定我是否误解了参考文献,所以我尝试添加参考文献ReportTemplate.ts
in Section.ts
and Widget.ts
但这没有帮助。我发现允许的唯一方法Section.ts
and Widget.ts
访问numbers
and formatDate
是导出它们,但我不希望它们可以在模块外部访问。
我已经阅读了很多有关打字稿模块的内容,但是我没有找到任何与我想要做的相同的示例,所以我仍然感到困惑。我是否试图做一些无法完成的事情,或者我只是以错误的方式去做?
我建议您转向 ES6 风格的模块和导入。而不是现在使用关键字的“命名空间”module
.
要适应上面的示例,请执行以下操作...
//Widget.ts
export class Widget { ... }
//Section.ts
export class Section { ... }
//ReportTemplate.ts
import {Widget} from './Widget.ts';
import {Section} from './Section.ts';
var numbers = [1, 2, 3];
function formatDate() { ... }
function doStuff() {
// use the classes you imported
var widget = new Widget();
var section = new Section();
}
您必须告诉 tsc 要使用什么模块语法,并且至少以 ES5 为目标:
//tsconfig.json
{
"module": "common",
"target": "ES5"
}
当进入 TypeScript 时,有关于此更改的讨论here https://github.com/Microsoft/TypeScript/pull/2923
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)