javascript - Använda både coffeescript och typescript i samma projekt
Jag försöker faktiskt arbeta med både CoffeeScript och TypeScript i samma projekt.
Faktiskt vill jag kunna välja vilken jag föredrar när jag programmerar.
Faktum är att javascript som genereras av typescript inte verkar fungera som förväntat med javascript som genereras med coffeescript
Förklaring :
Jag skrev en Controller-klass med Coffeescript som fungerar perfekt när jag utökar den i en Coffeescript-fil som nedan:
Controller = require('../node_modules/Controller/Controller')
class HelloController extends Controller
indexAction: (name) =>
console.log 'hey '+ name
module.exports = HelloController
Men när jag försöker använda det med TypeScript som nedan:
import Controller = require('../node_modules/Controller/Controller');
export class HelloController extends Controller {
constructor() {
super()
}
indexAction(name:String) {
console.log('hey '+name);
}
}
Jag fick ett fel som sa att kontrollern inte kan hittas på den förväntade platsen (JS-filen är väl genererad)
Kan du hjälpa mig?
Svar #1
Om du vill göra detta måste du ange typinformation om den Coffeescript-genererade JavaScript-filen.
Om du lägger till en Controller.d.ts kan du beskriva typerna i din controller-fil så att TypeScript kan tillämpa den typinformationen under kompileringen.
Till exempel:
declare class Controller {
protected name: string;
//... more type information
}
export = Controller;
Självklart innebär det i praktiken att du utför mycket mer arbete genom att skriva JavaScript eller Coffeescript och sedan också skriva typinformation i en annan fil - så du kanske vill fatta ett beslut från fall till fall om vilket språk du ska skriva programmet i. Till exempel, om du skriver ett verktygssats i Coffeescript, är det lätt att skriva en enda .d.ts-fil för det - medan om du skriver en fil här och där i Coffeescript kommer du att få en viss underhållsnatt: antingen skapa många .d.ts-filer eller hantera en enda sammanslagen fil varje gång du ändrar en av delarna.
Definitionsfiler fungerar bäst mot ett stabilt API.
