らんだむな記憶

blogというものを体験してみようか!的なー

TypeScript 実験

ふと気になる TypeScript のコードを見かけたので実験してみる。

class Message {
  readonly message: string;

  constructor(message: string) {
    this.message = message;
  }
}

class Messenger {
  private readonly message: Message;

  constructor(message: Message) {
    this.message = message || new Message('Hello');
  }

  public sayMessage(): void {
    console.log(this.message.message);
  }

  public overrideMessage(message: Message): void {
    (this.message as Message) = message;
  }
}

let messenger = new Messenger(null);
messenger.sayMessage();
messenger.overrideMessage(new Message('Hi!'));
messenger.sayMessage();

という感じの実装をして実行すると

$ node_modules/typescript/bin/tsc hello.ts 
$ node hello.js 
Hello
Hi!

となる。(this.message as Message) とすることで readonly なメンバを上書きできると。なんか C++mutable を思い出す。それにしてもこんなにガチガチに型を書くなら JavaScript 的なやつでなくてもいいなぁ・・・って気になってくる。
トランスパイルして得た .js を眺めると jQuery を思い出すなぁ・・・。