5
3

More than 5 years have passed since last update.

TypeScriptを使ってみたが

Last updated at Posted at 2013-11-27

altJSは必要だろう、ということでTypeScriptを触ってみた。

が、moduleを使ったコードが動かないということが分かり、2013/11/27時点での導入は時期尚早という結論を得た。

以下、やったこと。

Jabara.ts
export module Jabara {
    export class Animal {
        constructor(private name: string) {
        }
        cry() {
            console.log(this.name);
        }
    }
    export class Dog extends Animal {
        cry() {
            super.cry();
            console.log("Bow!");
        }
        cryLazily() {
            setTimeout(() => {
                this.cry();
            }, 3000);
        }
    }
}

module B {}
main.ts
import m = require('Jabara');
new m.Jabara.Dog('アロー').cryLazily();

moduleを含むTypeScriptソースはcommonjsとamdの2つの方式(?)でコンパイル出来るのだけど、その両方で試してみて動かない。

commonjsの場合、require関数がないので動かない。

amdの場合define関数がないので動かない。

困った。
CoffeeScriptは静的な型がない点で、あまり使うのに気が進まない。どうしたものか・・・

さっそく追記

現時点でmoduleをうまく使う方法がQiitaにて紹介されていました。

これさえやれば大丈夫! TypeScriptのImportが取っ付きにくい人向け

これを読んで、次のようにコードを修正したら動きました。

Jabara.ts
module Jabara {
    export class Animal {
        constructor(private name: string) {
        }
        cry() {
            console.log(this.name);
        }
    }
    export class Dog extends Animal {
        cry() {
            super.cry();
            console.log("Bow!");
        }
        cryLazily() {
            setTimeout(() => {
                this.cry();
            }, 3000);
        }
    }
}

module B {}
main.ts
/// <reference path="Jabara.ts" />
new Jabara.Dog('アロー').cryLazily();

はまりポイントあり。
Jabaraモジュールをエクスポートしたかったので、当初は

export module Jabara {

と書いていたら、これがまずかった。exportを省いて

module Jabara {

と書けばOK。うーん、分かりにくい。

5
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3