ゆうなんとかさんの雑記帳的な。

Twitterで踊ったり音ゲーしたりしてるあの名前がよくわからない人が書いてるらしいよ。

リライトが思ったよりも難航しそうだ…(´・ω・`)

もともと動くコードを下手にリライトするのがそもそも間違っているのか、いやそうではないはず。
今回は最低限リライトに必要そうなTypeScriptの文法を確認しましょう。

型定義

TypeScriptと名乗るだけあって、型を定義することができます。あんまりくわしく知らないんですが、ActionScriptもこんな感じで書くそうです。型を後置する言語は、私の知る限りだと他にVisualBasic.NETがありますね。逆にいうとそれくらいしか知らないくらいには珍しい書き方なのかもしれません。

var hoge:string = "hello!"; //string型定義

ちなみにany型というものがあって、これはいわゆるなんでもあり型です。濫用しすぎると型をつけるメリットが殺がれてしまうので注意ですね。

function一族

JavaScriptではメソッドがfunctionなのは当然としても、クラスもfunction、さらにはコンストラクタイベントハンドラーもあまねくfunctionというカオスっぷりでしたが、TypeScriptでは改善されています。

class Hoge {               //クラス定義
    constructor() { }      //コンストラクタ
    method(arg:string) { } //メソッド
    event = => { }         //イベントハンドラ
}

と、このように書き分けることができます。

モジュール

名前のかぶりでお困りの皆さんに朗報です。モジュールを使うことで、名前空間を簡単に実現できます。JavaScriptだとこれもまたfunctionで実現していたんですよね、たしか。

module Hoge {
    class Fuga {
        constructor() { }
    }
}

var fuga = new Hoge.Fuga();

継承

JavaScriptの継承は、要はすでに出来上がった服にアクセサリーを足していくような作業が必要です。付け足すものがアクセサリーくらいであればいいのですが、大規模になってくると管理が大変です。このへんはクラスベースのほうが強い気がしますので、こう書きましょう。

class SuperClass {
  greet() { }
}
class SubClass extends SuperClass {
}

var sub:SubClass = new SubClass();
sub.greet();