Typescriptで型チェックがうまくいかないことがあったのでメモです。
class Value<T> {
v: T;
constructor(v: T) { this.v = v; }
value(): T { return this.v; }
}
class Title extends Value<String> {}
class Description extends Value<String> {}
var a: Title = new Description('hoge');// エラーになってほしい..
こんな感じのコードを書いたら
当然最後の行でエラーになると思ったら
ビルドが通ってしまった。。
なのでAクラスだけにhogeメソッドを追加したらちゃんとエラーになった。
class Value<T> {
v: T;
constructor(v: T) { this.v = v; }
value(): T { return this.v; }
}
class Title extends Value<String> {
hoge() {}// 追加
}
class Description extends Value<String> {}
var a: Title = new Description('hoge');// エラーになる
インターフェースレベルでチェックしてるのかなぁ。