TypeScript で関数にプロパティをはやしたい(その2)
この内容は TypeScript 0.9.1.1 をもとに記述しています。
TypeScript 0.9.1.1 がでましたね。次はやっと1.0かな?
さてさて、前回 は Declaration Merging で関数にプロパティをはやしたのですが、やはりというか予想通りというか対応できないケースが出てきました。
で、頭をひねってみて Interface にキャストしてみました。
interface IGreeting { foo(): string; } function greeting(): string { return "hello"; } var g:IGreeting = <IGreeting>greeting; g.foo = function(): string { return "world"; }
予想通り怒られました。
error TS2012: Cannot convert '() => string' to 'IGreeting':
ってことで、無理やり Any にキャストしてからさらにインターフェイスにキャストすることに。
var g:IGreeting = <IGreeting><any>greeting; g.foo = function(): string { return "world"; }
無事に?いけました。生成された JavaScript は以下。
interface IGreeting{ foo(): string; } function greeting(): string{ return "hello"; } var g:IGreeting = <IGreeting><any>greeting; g.foo = function(): string{ return "world"; }
完全に TypeScript の意味なしですね。。。