2.0.3クラスを継承するとサブ(子)クラスは、スーパー(親)クラスのプロパティやメソッドを自らのものとして使えます。サブクラスを定めれば、スーパークラスの機能を拡張したり、使い途に応じたサブクラスをつくるなど、柔軟な開発ができるようになります。publicとprivateおよびstatic」で書いたコード002「クラスにプロパティやメソッドを加えたTypeScriptコード」に手を加えてゆきます。クラス(Point)にprivate宣言したプロパティを、publicに変えましょう。キーワードprivateを消せば、デフォルトのpublicになります。publicはコンストラクタの引数に宣言することもできるのです。すると、つぎのようにプロパティへの代入も省いてしまえます。y;}}クラスを継承するには、サブクラス(Vector)のclassの定めに、つぎのようにキーワードextendsでスーパークラス(Point)を与えます。サブクラスのコンストラクタ(constructor())は、関数super()でスーパークラスのコンストラクタを呼びださなければなりません。y);}}これで、サブクラス(Vector)が定められました。サブクラス自らのプロパティもメソッドもありません。つぎのようにインスタンス(obj)をつくれば、スーパークラス(Point)のプロパティやメソッドが自らのものとして扱えます。ここまでのTypeScriptコードは、以下にまとめました(コード001)。サブクラスにインスタンスメソッドを加えるサブクラスへのメソッドの加え方は、通常のクラスと変わりません。つぎのようにふたつのメソッドを加えましょう。座標への定数(スカラー)倍(scale())と加算(add())です。後者の引数(point)の型には、スーパークラス(Point)を与えました。サブクラス(Vector)のインスタンスも渡せます。point.y;}}たとえば、つぎのコードでサブクラス(Vector)のインスタンス(obj)をつくると、サブクラスのインスタンスメソッド(scale()とadd())が呼び出せるとともに、スーパークラス(Point)のインスタンスメソッド(getLength()とgetAngle())も使えます。ここまでのサブクラスを定めたTypeScriptコードは以下にまとめました(コード002)。サブクラスに静的メソッドを加えるサブクラス(Vector)に静的メソッドを加えることもできます。やり方は、普通のクラスと同じです。0)からの距離と角度を引数に渡して、インスタンスが返されるメソッドにします。スーパークラス(Point)には、すでにこのような静的メソッド(polar())が備わっています。返されるのはスーパークラスのインスタンスですから、サブクラスのメソッドが使えません。そこで、同じ名前のつぎのような静的メソッド(polar())をサブクラスに加えました。座標計算は同じなので、スーパークラスの静的メソッドでつくったオブジェクトから取り出した座標により、サブクラスの新たなインスタンスをつくって返しています。point.y);}}これで、つぎのようにサブクラス(Vector)の静的メソッド(polar())でインスタンス(obj)がつくられ、サブクラスとスーパークラス(Point)どちらのメソッドも呼び出せます。TypeScriptコードは以下にまとめました(コード003)。以下にサンプル001としてjsdo.itに書いたコードを掲げてあります。TypeScriptのバージョンを2.0.3に更新。