无法将JavaScript注入模式转换为TypeScript
Unable to convert JavaScript injection pattern to TypeScript
我们在一个相当大的普通JavaScript应用程序(更像是一个有许多消费者的框架)中使用定制的注入模式。该模式允许我们明确每个JS模块的依赖关系。这有两个主要的好处:在单元测试模块时很容易存根依赖,它允许我们的消费者在运行时动态地替换模块实现。
我们已经开始将所有模块迁移到TypeScript,但是在转换一些暴露自定义类型的模块时遇到了麻烦。问题是TypeScript似乎想要立即导出自定义类型,但实际上我们想要在通过函数调用(我们的依赖注入模式)提供运行时依赖后导出类型。
所以问题是我们如何在不影响模式本身的情况下将下面的注入模式转换为TypeScript ?
module.exports = function ContextModule(logger) {
var log = logger.register('context');
function Context() {
log('creating type');
}
Context.prototype = {
doSomething: function() {
log('doing something');
}
}
Context.doSomethingStatic = function() {
log('doing something static');
}
return Context;
};
返回自定义类型,然后可以在需要时创建它。例如,我们可以像这样在main.js中编写上述高度人为设计的模块:
var loggerModule = require('LoggerModule.js');
var contextModule = require('ContextModule.js');
logger = loggerModule();
var Context = contextModule(logger);
// then we might use the Context type
var context = new Context();
context.doSomething(); // instance method
Context.doSomethingStatic(); // static method
注意以下内容:
- 记录器模块被注入到上下文模块 记录器模块方法直接在ContextModule函数中使用,或者在它定义的"类"实现中使用。
- 我们使用CommonJs来"require in"模块文件,并通过browserify来组合它们
所以问题是我们如何在不影响模式本身的情况下将下面的注入模式转换为TypeScript
你可以直接使用它(JavaScript是有效的TypeScript)。如果你想要安全,将注入框架转换为TypeScript习惯用法的过程将比使用专门为它设计的框架要困难得多。
我强烈推荐https://github.com/inversify/InversifyJS
相关文章:
- 如何将TypeScript对象转换为普通对象
- 将JSON转换为typescript中的字符串数组
- 将mongoose javascript代码转换为typescript.此引用丢失
- 如何在我的模板(Angular2/TypeScript)中将HTML字符串转换为HTML
- 为什么微软开发了一种名为Typescript的新语言,而不是创建C#到Javascript的转换程序
- 将 Typescript 转换为 Javascript 最佳实践
- 转换 document.getElementById 以访问 TypeScript 中的文件
- 参数“[controllerName]”在转换为TypeScript时不是未定义的NaNunction
- 在 TypeScript 中从 DOM 属性转换为枚举
- 使用类将JSON对象强制转换为typescript类型的变量的正确方法
- 从Javascript转换为Typescript
- 有没有什么方法可以用Typescript强制转换或更改对象的定义
- 是否有可能自动将JavaScript转换为TypeScript ?
- 转换angular 1的问题.将x控制器导入TypeScript
- 使用&;this&;出错转换为Typescript后
- 无法将JavaScript注入模式转换为TypeScript
- 将Javascript函数转换为Typescript,包括getComputedTextLength()
- 将javascript关联数组转换为typescript
- 在TypeScript中将数字转换为字符串
- 把我的Angular代码转换成TypeScript