use*_*840 21 node.js typescript
使用typescript在nodejs中导入模块的最佳做法是什么?我来自c#background,所以我想做这样的事情
MyClass.ts
module MyNamespace {
export class MyClass {
}
}
Run Code Online (Sandbox Code Playgroud)
app.ts
// something like using MyNamespace
new MyNamespace.MyClass();
Run Code Online (Sandbox Code Playgroud)
要么
MyClass.ts
export class MyClass {
}
Run Code Online (Sandbox Code Playgroud)
app.ts
import MyClass = module("MyClass")
new MyClass();
Run Code Online (Sandbox Code Playgroud)
我知道我可以做到这一点并且它会起作用,但是我必须为每个班级想出两个名字
import MyClass2 = module("MyClass")
new MyClass2.MyClass();
Run Code Online (Sandbox Code Playgroud)
Point将类分隔为多个.ts文件(最好是每个类一个文件).所以问题是,这是怎么做到的?
Val*_*tin 15
你有两个选择:
如果您坚持使用CommonJS或AMD模块,则必须按照您在问题中描述的方式使用外部模块.是否使用模块声明自己的命名空间主要是品味问题.避免指定两个名称的问题的唯一方法是创建一个别名类型的变量:
mymodule.ts
export module MyNamespace {
export class MyClass {
}
}
Run Code Online (Sandbox Code Playgroud)
app.ts
import ns = require('mymodule');
var myclass = new ns.MyNamespace.MyClass();
var myclassalias = ns.MyNamespace.MyClass;
var myclass2 = new myclassalias();
Run Code Online (Sandbox Code Playgroud)
您的另一个选择是使用内部模块,这些模块主要用于在内部构建代码.内部模块在编译时使用引用路径进入范围.
mymodule.ts
module MyNamespace {
export class MyClass {
}
}
Run Code Online (Sandbox Code Playgroud)
app.ts
///<reference path='mymodule.ts'/>
var myclass = new MyNamespace.MyClass();
Run Code Online (Sandbox Code Playgroud)
我认为你必须自己决定哪两种方法更合适.
| 归档时间: |
|
| 查看次数: |
22288 次 |
| 最近记录: |