2014-01-07 171 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

相關問題