2014-01-07 86 views
4

我正在构建一个Web应用程序,其中的开发不是基于TypeScript构建的,但是应用程序具有我想要使用插件样式的集成点 - 而这正是使用TypeScript的地方。 TypeScript代码位于第二个解决方案中,我将js文件复制到第一个解决方案中的文件夹中。我正在使用require来加载所有内容。我有一个TypeScript中文件路径的问题。我创建了需要配置Typescript with 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文件将在定义 - 模块名作为配置,而不是路,我怎么过不能编译的打字稿项目,因为我得到

import common = require("VideoProviderCommon"); 

编译错误 为例如 - 因为它找不到模块,虽然我有要求配置

define(["require", "exports"], function(require, exports) { 
    ..... 
    var videoWorkItem = (function() { 
    function videoWorkItem() { 
    } 
    return videoWorkItem; 
})(); 
exports.videoWorkItem = videoWorkItem; 

});

+0

VideoProviderCommon是JavaScript文件,同一项目中的TypeScript类还是另一个项目中的TypeScript类? –

+0

每一件事都是打字稿 - 问题是我不想要依赖关系,我将拥有绝对路径,但只是文件的名称 –

+0

声明文件为VideoProviderCommon生成的内容是什么样的?因此,我应该能够告诉你需要做什么才能使其发挥作用。 –

回答

0

要将JS文件导入到打字稿文件中,您有两个选项。任一定义外部模块youself例如:

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

,或者使用amd-dependency标志作为覆盖:http://www.youtube.com/watch?v=4AGQpv0MKsA&hd=1

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的需求,jquery等类型

+0

NB。你真的确实需要require.d.ts才能工作,其他明智的内置'require'关键字将被调用导致上述不工作*在所有*。请参阅https://github.com/jbaldwin/require.d.ts/blob/master/require.d.ts(注意文件最底部重新定义了要求) – Doug

+0

您确定吗?顺便说一下,“NB”的含义是什么,从来没有见过这种缩写? – LunicLynx

+0

我不相信它的工作原理;它当然不会当我尝试它(生成的.js文件具有config *内* require调用,使其无用)。 NB表示'注意好'。 http://en.wikipedia.org/wiki/NB就像,FYI。 - > https://gist.github.com/shadowmint/10609103 – Doug

相关问题