我正在现有应用程序中创建一组新的网页。我们开始实现Typescript + RequireJS。
我试图找出如何在使用名称而不是路径的typescript中执行require调用。所有路径都将在require.config
中指定这里的例子是我的主要内容
require.config({
baseUrl: '/Scripts/Modules',
paths: {
'baseObject' : 'objects/base',
'inheritedObject' : 'objects/some/other/paths/inheritedObject'
});
这是baseObject.ts:
class BaseObject {
initialize(): void {
}
fingerprint: string;
}
export = BaseObject;
现在我想在inheritedObject.ts中做的是:
import baseObj = require('baseObject');
class InheritedObject extends baseObj{
//Object full of stuff
}
由于我在require.config中指定了路径,因此我不想在require调用中使用它。如何只使用提供的字符串(而不是路径!)来获取Typescript?
答案 0 :(得分:0)
我试图找出如何在使用名称而不是路径的typescript中执行require调用
import baseObj = require('baseObject');
目前不起作用(免责声明:如果您不想手动创建.d.ts
)。您必须使用相对路径。您的IDE可以提供帮助:https://github.com/TypeStrong/atom-typescript#relative-paths
注意:基于这种基于路径的解决方案即将推出:https://github.com/Microsoft/TypeScript/issues/2338
答案 1 :(得分:0)
所以我明白了。这是我做的(特别注意文件名与类名。):
File: /Objects/baseObject.ts
class BaseObject {
initialize(): void {
}
fingerprint: string;
}
export = BaseObject;
接下来我们有:
File:/Objects/Objects.d.ts
import baseObjInstance = require("baseObject");
export module "baseObject"{
export = baseObjInstance;
}
和实施:
File:/Controllers/baseController.ts
import baseObj = require('baseObject');
class BaseController extends baseObj{
}
export = BaseController;
这似乎允许注册定义,因此在require('baseObject')
时,typescript会理解定义。我相信我的require语句是路径,它们只是在本地目录中。这允许我在require配置中指定我的路径,我只需要确保匹配require配置中的模块导出语句。即。
require.config({
paths: {
"baseObject": 'Objects/baseObject'
}
})
唯一的缺点是我必须为每个对象定义添加一个导出语句。