Javascript 需要.js singleton才能输入脚本
下面是两个淡化的示例文件。这就是它们目前作为requirejs模块的工作方式。我已经在require配置中填充了api.js,将导出定义为api。我们的目标是,这些人将保持单身。我正试图将它们转换为与TypeScript等价的类型,但我不太明白如何将它们作为一个单例保存,并像现在这样将它们传递给各个模块 RequireJS风格 api.js auth.js TypeScript/AMD(requirejs)风格 到目前为止,我已经做到了以下几点,但这显然不是我想要的 auth.ts 编译为auth.js(Javascript 需要.js singleton才能输入脚本,javascript,singleton,requirejs,typescript,Javascript,Singleton,Requirejs,Typescript,下面是两个淡化的示例文件。这就是它们目前作为requirejs模块的工作方式。我已经在require配置中填充了api.js,将导出定义为api。我们的目标是,这些人将保持单身。我正试图将它们转换为与TypeScript等价的类型,但我不太明白如何将它们作为一个单例保存,并像现在这样将它们传递给各个模块 RequireJS风格 api.js auth.js TypeScript/AMD(requirejs)风格 到目前为止,我已经做到了以下几点,但这显然不是我想要的 auth.ts 编译为aut
tsc auth.ts--module amd
)
更新:除了接受的答案外,您还可以直接导出所有成员:
export var maxExpiredAuthorizationRetries: number = 1;
export function getAuthorizationHeader(): string { ...
export function setAuthorizationHeader(val: string): string {
然后
import api=module('api')代码>可以简单地通过说api.getAuthorizationHeader()
来使用。如果您要查找Singleton,我会在类中使用静态成员。大概是这样的:
在api.ts中
class Api {
static version:string = '0.0.1';
static header:string = '';
}
export = Api
在auth.ts中
import Api = module("api");
class Auth {
//...
public getAuthorizationHeader(): string {
return Api.header;
}
public setAuthorizationHeader(val: string): void {
Api.header = val;
}
}
“api.api”皱着眉头——似乎AMD和TypeScript很难实现额外的层次结构(您可以从Typescript 0.9.0中避免此重定向。请参见:在“导出”部分中,答案中的代码已修改为使用Typescript 0.9.0导入模块的方式。
define(["require", "exports", "api"], function(require, exports, __api__) {
var api = __api__;
(function (Common) {
var Auth = (function () {
function Auth(maxExpiredAuthorizationRetries) {
this.maxExpiredAuthorizationRetries = maxExpiredAuthorizationRetries;
}
Auth.prototype.getAuthorizationHeader = function () {
return api.header();
};
Auth.prototype.setAuthorizationHeader = function (val) {
api.header(val);
};
return Auth;
})();
var auth = new Auth(1);
})(exports.Common || (exports.Common = {}));
})
export var maxExpiredAuthorizationRetries: number = 1;
export function getAuthorizationHeader(): string { ...
export function setAuthorizationHeader(val: string): string {
class Api {
static version:string = '0.0.1';
static header:string = '';
}
export = Api
import Api = module("api");
class Auth {
//...
public getAuthorizationHeader(): string {
return Api.header;
}
public setAuthorizationHeader(val: string): void {
Api.header = val;
}
}