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

Posted

技术标签:

【中文标题】在同一个项目中同时使用 coffeescript 和 typescript【英文标题】:Using both coffeescript and typescript on the same project 【发布时间】:2015-03-21 01:03:56 【问题描述】:

我实际上是在尝试。

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

事实是,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

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

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

export class HelloController extends Controller 

    constructor() 
        super()
    

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

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

你能帮帮我吗?

【问题讨论】:

【参考方案1】:

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

【讨论】:

以上是关于在同一个项目中同时使用 coffeescript 和 typescript的主要内容,如果未能解决你的问题,请参考以下文章

将 CoffeeScript 项目转换为 JavaScript(不缩小)? [关闭]

用ES6代替CoffeeScript

如何使用 CoffeeScript 将多个项目放入 JSON 对象?

CoffeeScript:如何使用胖箭头和这个?

使用 ES6 模块和 CoffeeScript 的首选方式

CoffeeScript中对于在NetBeans 8.0插件:设置目标文件夹JS编译