2

我在示例中使用 AMD(特别是 RequireJS)和 TypeScript 来支持外部模块。这是main.tsRequireJS 加载的内容(通过 data-main 属性):

/// <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.

我必须使用常规的 RequireJSdefine方法来获取路由器和 domReady 依赖项:

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

任何想法如何使 domReady 和 uiRouter 作为 TypeScript 外部模块。

4

1 回答 1

1

任何想法如何使 domReady 和 uiRouter 作为 TypeScript 外部模块。

热修复

有一个vendor.d.ts包含以下内容的文件:

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

或者,您可以为这些创建适当的环境声明,或者在DefiniteTyped 中查找这些。

于 2015-07-05T23:52:41.163 回答