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

Using both coffeescript and typescript on the same project

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

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

事实是 typescript 生成的 javascript 似乎无法像预期的那样与 coffeescript

生成的 javascript 一起工作

解释:

我用 coffeescript 编写了一个控制器 class,当我在如下所示的 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 文件生成良好)

你能帮帮我吗?

如果您想这样做,您需要提供有关 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。