带有require配置的Typescript

时间:2014-01-07 19:52:12

标签: typescript

我正在构建一个Web应用程序,其中开发不是基于TypeScript构建的,但是应用程序具有我想要使用插件样式的集成点 - 这就是使用TypeScript的地方。 TypeScript代码在第二个解决方案中,我将js文件复制到第一个解决方案中的文件夹。我正在使用require来加载所有内容。我有一个TypeScript文件的路径问题。我创建了require config

require.config({
paths: {
    VideoProviderCommon: 'Scripts/VideoProvider/VideoProviderCommon',
    VideoProviderManagerFactory: 'Scripts/VideoProvider/VideoProviderManagerFactory',
    VideoProviderManager: 'Scripts/VideoProvider/VideoProviderManager'
},
shim: {
    'VideoProviderCommon': { 'exports': 'VideoProviderCommon' },
    'VideoProviderManagerFactory': { 'exports': 'VideoProviderManagerFactory' },
    'VideoProviderManager': { 'exports': 'VideoProviderManager' }
}

});

我希望js文件在define中有 - 模块名称配置而不是路径,我怎么都无法编译TypeScript项目因为我得到编译错误 在

import common = require("VideoProviderCommon");
例如

- 因为虽然我需要配置

但找不到模块
define(["require", "exports"], function(require, exports) {
     .....
  var videoWorkItem = (function () {
    function videoWorkItem() {
    }
    return videoWorkItem;
})();
exports.videoWorkItem = videoWorkItem;

});

2 个答案:

答案 0 :(得分:1)

我创建了一个额外的打字稿文件来设置配置并将其包含在require.js文件之后:

<html lang="en">
<head>
    ...
    <script data-main="Scripts/main" src="Scripts/require.js"></script>
    <script src="Scripts/config.js"></script>
</head>
<body>...</body>
</html>

的index.html

config.ts

requirejs.config({
    baseUrl: "Scripts",
    paths: {
        jquery: "jquery-1.10.2"
    }
});

config.ts

之后我能够像这样使用jquery:

import $ = require("jquery");
$(() => {
    alert("Hello world!");
});

main.ts

注意:我通过NuGet

获得了require,jquery等的所有类型

答案 1 :(得分:0)

要将JS文件导入打字稿文件,您有两种选择。要么自己定义外部模块,例如:

declare module "VideoProviderCommon"{
    var foo:any;
    export = foo;
}

或使用http://www.youtube.com/watch?v=4AGQpv0MKsA&hd=1

中所述的amd-dependency标记