我做了如下的事情:
namespace omid{
let version='1.0';
function boot(){ /*some code*/ };
class cookie{
//
}
}
现在,我想将cookie
类移动到另一个文件中,并将路径指向我的命名空间omid
内部。反正有这样做吗?
我已经尝试过了:
omid.ts:
namespace omid{
let version='1.0';
function boot(){ /*some code*/ };
}
cookie.ts:
namespace omid{
export class cookie{
//
}
}
tsconfig.json:
{
"compilerOptions": {
"module" : "commonjs",
"target" : "es5",
"sourceMap": true,
"outFile" : "dist/omid.js"
},
"files" : [
"src/omid.ts",
"src/libs/cookie.ts"
],
"exclude" : [
"node_modules"
]
}
输出:
var omid;
(function (omid) {
var version = '1.0';
function boot() {
}
}
})(omid || (omid = {}));
var omid;
(function (omid) {
var cookie = /** @class */ (function () {
function cookie() {
alert("aaa");
}
return cookie;
}());
omid.cookie = cookie;
})(omid || (omid = {}));
答案 0 :(得分:0)
通过将调用放入构造函数或其他Cookie类方法中,可以从Cookie类调用boot()
。
namespace omid {
let version='1.0'
export function boot() {
console.log("booting...")
}
}
namespace omid {
export class Cookie{
constructor() {
boot()
}
}
}
let test = new omid.Cookie()
更新
由于无法为CommonJS使用"module" : "commonjs"
选项,因此必须从tsconfig中删除outFile
。
答案 1 :(得分:0)
Typescript名称空间是在es6模块成为标准之前发明的。从那时起,名称空间也许还没有被弃用,但是它们的使用却在减少,以支持模块。因此,很少有人可以向您咨询名称空间,而我不是其中之一。
但是如果允许您将代码重写为模块,那么一切都非常简单:
cookie.ts:
export class Cookie { /*...*/ }
omid.ts:
import { Cookie } from './cookie'
export let version='1.0';
export function boot(){ /*some code*/ };
export {Cookie}
anywhere.ts:
import {Cookie} from './omid'