簡體   English   中英

在VS2012中的TypeScript項目中使用JavaScript項目

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM