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

在VS2012的TypeScript项目中使用JavaScript项目,javascript,visual-studio-2012,typescript,Javascript,Visual Studio 2012,Typescript,我安装了Node.js工具,我有一个可以在本地文件上运行的项目,可以正常工作。对于web应用程序,我想使用TypeScript,稍后我可能会以某种方式将node.js代码迁移到TS。只需在我的另一个项目中调用函数 这是我用来调用函数compiler.compile的可执行文件 var compiler = require("../src/compiler"), fs = require("fs"); fs.readFile(process.argv[2], 'utf8',

我安装了Node.js工具,我有一个可以在本地文件上运行的项目,可以正常工作。对于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项目中使用编译函数

我试过:

<script src ="compiler.js"></script>
<script src="app.js"></script>
但这似乎不起作用

编辑:我也尝试过这样做:

compiler.js

编译程序

app.ts

但我在app.ts中的import compiler=module下面得到了一条扭曲的线,表示module不能被别名为非模块类型。无法解析模块引用“模块”

所有3个文件都在同一文件夹和项目中进行测试


EDIT2:我设法让它识别compiler.d.ts中的模块,即使是通过使用'require'而不是'module'移动到我的JS项目,但它似乎没有链接到compiler.JS文件中的我的函数。事实上,我在任何地方都没有看到任何将JS函数链接到d.ts声明的东西,这非常令人困惑。

我可能不完全理解您的问题,但我相信您需要

在compiler.d.ts中

在app.ts中

您应该在import语句中省略文件扩展名。最新版本的TypeScript使用的是require,而不是您发现的模块。如果只是使用compilest调用函数,则声明不需要以任何方式包装函数。如果您确实希望将其包装在模块和类中,请记住模块就是文件,因此您需要在备用编译器.d.ts中使用如下所示的模块声明

declare class CompilerClass {

    compile(code: string): any;

}
其用途如下:

import Compiler = require('/compiler');

var compiler = Compiler.CompilerClass();

compiler.compile('Code here');

这对我不管用。它构建并运行,但什么也没发生。起初我留下VS初始项目代码在页面和你的app.ts上写东西,但它从来没有达到编写部分。我也根本无法调试。我把我所有的JS文件都放在TS项目中,虽然我可以用VS的nodejs工具调试JS,但是我在TS项目中的JS文件上添加的任何断点都会被忽略。这应该是它自己的问题。。。
declare module "compiler.js" {
        class Compiler {
            compile();
        }
    }
///<reference path="./compiler.d.ts"/>
import compiler = module("compiler.js");
declare var compile: (code: string) => any;

export = compile;
import compile = require('./compiler');

compile('Code In Here');
declare class CompilerClass {

    compile(code: string): any;

}
import Compiler = require('/compiler');

var compiler = Compiler.CompilerClass();

compiler.compile('Code here');