在同一项目上同时使用coffeescript和打字稿

mfr*_*het 5 javascript coffeescript typescript

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

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

事实是,由typescript生成的javascript似乎与用coffeescript生成的javascript不能正常工作

说明:

我用coffeescript写了一个Controller类,当我将它扩展到如下的coffeescript文件中时,它可以完美地工作:

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

class HelloController extends Controller

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

module.exports = HelloController
Run Code Online (Sandbox Code Playgroud)

但是当我尝试将其与如下所示的打字稿一起使用时:

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

export class HelloController extends Controller {

    constructor() {
        super()
    }

    indexAction(name:String) {
        console.log('hey '+name);
    }
}
Run Code Online (Sandbox Code Playgroud)

我收到一条错误消息,告诉我无法在预期的位置找到控制器(.js文件生成正确)

你能帮助我吗 ?

Fen*_*ton 5

如果要执行此操作,则需要提供有关Coffeescript生成的JavaScript文件的类型信息。

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

例如:

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

export = Controller;
Run Code Online (Sandbox Code Playgroud)

当然,从本质上讲,您需要进行大量工作来编写JavaScript或Coffeescript,然后再将类型信息写入另一个文件中-因此您可能希望根据单元来决定要编写程序的内容。例如,如果您在Coffeescript中编写工具包,则很容易.d.ts为它编写一个文件-而如果您在Coffeescript中到处编写文件,则将遇到一些维护方面的噩梦(要么创建大量文件.d.ts文件或每次更改其中一个部分时管理一个合并的文件)。

定义文件针对稳定的API效果最好。