在同一个项目中同时使用coffeescript和typescript

时间:2015-01-22 09:39:45

标签: javascript coffeescript typescript

我实际上是在同一个项目中尝试使用coffeescript和typescript。

事实上,我希望能够在编码时选择我喜欢的那个。

事实是,由于使用coffeescript生成的javascript,打字稿生成的javascript似乎无法正常工作

说明:

我用coffeescript编写了一个Controller类,当我在下面的coffeescript文件中扩展它时,它运行得很好:

Controller = require('../node_modules/Controller/Controller')

class HelloController extends Controller

  indexAction: (name) =>
     console.log 'hey '+ name

module.exports = HelloController

但是当我尝试将它与下面的打字稿一起使用时:

import Controller = require('../node_modules/Controller/Controller');

export class HelloController extends Controller {

    constructor() {
        super()
    }

    indexAction(name:String) {
        console.log('hey '+name);
    }
}

我收到一个错误,告诉我控制器无法在预期位置找到(.js文件生成良好)

你能帮助我吗?

1 个答案:

答案 0 :(得分:4)

如果您想这样做,您需要提供有关Coffeescript生成的JavaScript文件的类型信息。

如果添加Controller.d.ts,您可以在控制器文件中描述类型,以便TypeScript可以在编译期间应用该类型信息。

例如:

declare class Controller {
    protected name: string;
    //... more type information
}

export = Controller;

当然,您基本上在编写JavaScript或Coffeescript以及在另一个文件中编写类型信息的工作要多得多 - 所以您可能希望根据每个单元做出关于您要编写程序的内容的决定例如,如果你在Coffeescript中编写一个工具包,就可以很容易地为它编写一个.d.ts文件 - 而如果你在Coffeescript里写一个文件就可以了一点维护噩梦(每次更改其中一个部分时,要么创建大量.d.ts个文件,要么管理一个合并的文件。)

定义文件最适合稳定的API。