[英]Using a JavaScript project in a TypeScript project in VS2012
我安裝了Node.js工具( https://nodejstools.codeplex.com/ ),並且我有一個可以在本地文件上正常運行的項目。 對於Web應用程序,我想使用TypeScript(稍后我可能會以某種方式將node.js代碼遷移到TS)。 只需在我的其他項目中調用一個函數。
這是我用來調用函數(compiler.compile)的可執行文件
var compiler = require("../src/compiler"),
fs = require("fs");
fs.readFile(process.argv[2], 'utf8', function(err, data) {
if (err) {
console.log("FILE READ ERROR: ", err);
process.exit();
}
var output = compiler.compile(data);
});
這就是我的導出方式:
exports.compile = function(code) {
//code
};
我將如何在VS2012 TS項目中使用我的compile()函數?
我試過了:
<script src ="compiler.js"></script>
<script src="app.js"></script>
和:
declare function compile(code:String);
但這似乎不起作用。
編輯 :我也嘗試這樣做:
編譯器
exports.compile = function() {};
編譯器
declare module "compiler.js" {
class Compiler {
compile();
}
}
應用程序
///<reference path="./compiler.d.ts"/>
import compiler = module("compiler.js");
但是我在app.ts的“導入編譯器=模塊”下得到了一條彎曲的行,上面寫着“模塊不能別名為非模塊類型。無法解析模塊引用'模塊'。”
所有3個文件都位於同一文件夾和項目中以進行測試。
EDIT2 :即使通過使用“ require”(而不是“ module”)將其移至我的JS項目中,我也設法使其識別了editor.d.ts中的模塊,但它似乎未鏈接到我的編譯器中的函數。 js文件。 實際上,我在任何地方都看不到將JS函數鏈接到d.ts聲明的任何東西,這非常令人困惑。
我可能無法完全理解您的問題,但我相信您需要...
在compiler.d.ts
declare var compile: (code: string) => any;
export = compile;
在app.ts
import compile = require('./compiler');
compile('Code In Here');
您應該在import語句中省略文件擴展名。 TypeScript的最新版本使用require
而不是module
(如您所發現的)。 如果僅使用compile(str)
調用該函數,則聲明不需要以任何方式包裝該函數。 如果確實希望將其包裝在模塊和類中,請記住該模塊是文件,因此您需要對模塊進行聲明(如下所示,在替代版editor.d.ts中)。
declare class CompilerClass {
compile(code: string): any;
}
這將被如下使用:
import Compiler = require('/compiler');
var compiler = Compiler.CompilerClass();
compiler.compile('Code here');
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.