簡體   English   中英

打字稿-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正常工作?

我試圖弄清楚如何在使用名稱而不是路徑的打字稿中進行require調用

import baseObj = require('baseObject'); 目前將無法使用(免責聲明: 如果您不想手動創建.d.ts )。 您必須使用相對路徑。 您的IDE可以幫助您: https : //github.com/TypeStrong/atom-typescript#relative-paths

注意:這種基於基本路徑的解決方案即將推出: https : //github.com/Microsoft/TypeScript/issues/2338

所以我想通了。 這是我所做的(特別注意文件名與類名。):

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中指定路徑,我只需要確保匹配require config中的模塊export語句框即可。 IE瀏覽器

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

唯一的缺點是我必須為每個對象定義添加一個export語句。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM