2015-06-21 69 views
2

我在示例中使用AMD(特別是RequireJS)以及TypeScript來支持外部模塊。下面是其中RequireJS負載(通過數據主屬性)main.ts將angular-ui-router和RequireJS domReady作爲TypeScript模塊導入

/// <reference path="../typings/tsd.d.ts" /> 
requirejs.config({ 
    paths: { 
    jquery: '../bower_components/jquery/dist/jquery', 
    angular: '../bower_components/angular/angular', 
    uiRouter: '../bower_components/angular-ui-router/release/angular-ui-router', 
    domReady: '../bower_components/requirejs-domready/domReady" 
    }, 
    shim: { 
    angular: { 
     deps: ['jquery'], 
     exports: 'angular' 
    }, 
    uiRouter: { 
     deps: ['angular'] 
    } 
    }, 
    deps: ['bootstrapper'] 
}); 

和這裏的bootstrapper.ts(不處於工作狀態),該文件引導了應用:

import angular = require('angular') // works fine 
import uiRouter = require('uiRouter') // VS Code throws error. External module not found. 
import domReady = require('domReady') // Same error as above. 

angular.bootstrap(domReady, ['myApp'], {strictDi: true}); // Not working due to domReady. 

我不得不訴諸使用以定期RequireJS」 define方法來獲得路由器和domready中的依賴關係:

define(['angular', 
    'domReady', 
    'uiRouter' 
], (angular, document, uiRouter) => { 
    angular.bootstrap(document, ['myApp'], {strictDi: true}); 
}); 

任何想法我怎麼能ま將domReady和uiRouter作爲TypeScript外部模塊。

回答

1

任何想法如何使domReady和uiRouter作爲TypeScript外部模塊。

的HotFix

有一個包含以下內容的文件vendor.d.ts

declare module "uiRouter" { 
    var dummy:any; 
    export = exp; 
} 
declare module "domReady" { 
    var dummy:any; 
    export = exp; 
} 

另外,您可以創建適當的環境聲明這些,或者在DefinitelyTyped看這些了。

+0

謝謝@basarat。我不知道應該從「uiRouter」模塊輸出什麼。 angular-ui-router位於一個單獨的'ui.router'角度模塊中。所以'出口=?' –

+0

這是使用///

+0

是一個好主意是的,但只*如果你不打算實際使用導出的值 – basarat