Typescript - RequireJS 在 require.config 中指定路径

Typescript - RequireJS specify pathing in require.config

我正在现有应用程序中创建一组新网页。我们开始实现Typescript+RequireJS

我想弄清楚如何在使用名称而不是路径的打字稿中进行 require 调用。所有路径都将在 require.config

中指定

例如我的 main.ts

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 工作?

I am trying to figure out how I can do a require call in typescript that uses a name rather than a path

import baseObj = require('baseObject'); 目前将不起作用(免责声明:如果您不想手动创建 .d.ts)。您必须使用相对路径。您的 IDE 可以提供帮助:https://github.com/TypeStrong/atom-typescript#relative-paths

注意:这种基于基本路径的解决方案即将推出:https://github.com/Microsoft/TypeScript/issues/2338

所以我想通了。这是我所做的(特别注意文件名与 class 名称。):

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') 时打字稿可以理解该定义。我相信我的 require 语句是路径,它们只是对本地目录执行此操作。这允许我在需求配置中指定我的路径,我只需要确保匹配需求配置中的模块导出语句外壳。即

    require.config({
       paths: {
        "baseObject": 'Objects/baseObject'
    }
})

唯一的缺点是我必须为每个对象定义添加一个导出语句。