在同一项目上使用咖啡脚本和打字稿

Using both coffeescript and typescript on the same project

本文关键字:脚本 咖啡 项目      更新时间:2023-09-26

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

事实上,我希望能够在编码时选择我更喜欢哪一个。

事实是,由 typescript 生成的 javascript 似乎与使用 coffeescript 生成的 javascript 无法按预期工作

解释:

我用咖啡脚本编写了一个控制器类,当我在咖啡脚本文件中扩展它时,它可以完美运行,如下所示:

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。