在同一个项目中同时使用 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。
我实际上正在尝试在同一个项目中同时使用 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。