将大型typescript文件拆分为跨多个文件的模块
Splitting large typescript file into module across multiple files
我目前有一个大的typescript文件,我想分割。有一些函数和变量只在文件中使用,还有一些类。它现在看起来像这样:
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
和Section
无法访问numbers
和formatDate
。
我不确定我是否只是误解了参考文献,所以我试着在Section.ts
和Widget.ts
中添加ReportTemplate.ts
的参考文献,但它没有帮助。我发现允许Section.ts
和Widget.ts
访问numbers
和formatDate
的唯一方法是导出它们,但我不希望它们在模块外可访问。
我已经读了不少关于typescript模块,但我还没有发现任何例子,是相同的,我想做的,所以我还是很困惑。我是在尝试做一些无法完成的事情,还是我只是用错了方法?
我建议您移动到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 这里
相关文章:
- 节点Js:How to catch a“;没有这样的文件或目录“;读取线模块出错
- 在ES6中,模块将导致多个网络调用,因为两个模块不能在单个文件中定义
- 如何定义一个模块并使用它来分离js文件
- 如何引用HTML中节点模块中的js文件
- 如何使用Node.js在JavaScript模块文件之间使用事件处理程序
- 需要从一个文件中获取多个模块
- 是否可以从javascript文件中将量角器作为模块运行
- 文件结构:使用索引.js文件级联访问子模块或子文件
- ESDoc将我所有的模块方法放在一个标题下,而不是放在每个文件下,我该如何改变这种行为
- 如何在新创建的模块中从Odoo v8中的Javascript文件中调用python函数
- Nodejs模块文件和concat
- 访问模块.从外部文件导出
- require('file_path')后面的后缀(模块)在javascript文件中是什么意思
- 如何将多个 AMD 模块捆绑在一个文件中
- 需要来自单个JS文件的多个子模块与节点/组件.js
- 如何在RT上添加插件和使用一些外部模块/文件
- 从导出的模块返回变量,并在另一个文件(NodeJS)中使用它
- Javascript、多文件模块和Require.Js
- 如何在其他JS文件/模块中调用/使用此模块
- 使用AMD在Typescript中引用一个文件(模块)