1/9(木)
http://www.typescriptlang.org/docs/handbook/interfaces.html
Introduction
- TSはduck typingでありstructural subtypingである
Our First Interface
- TSは要求されているプロパティがあるかだけをチェックする
Optional Properties
- プロパティ名の後ろに?をつけるとoptionalになる
Readonly properties
- プロパティ名の前にreadonlyをつけると書き換え不可になる
ReadonlyArray<T>
というやつもあるぞ
Excess Property Checks
要求されているプロパティがあるかだけをチェックする
とoptionalを組み合わせると、optional propertyのプロパティ名のtypoが型エラーにならなくなる- でもtypoはバグとして検出したい…検出したくない?
- なのでTSはプロパティ名を手書きする(リテラル)ときは特別に
excess property checking
をするObject literal may only specify known properties, but 'hoge' does not exist in type 'Fuga'.
excess property checking
を回避する方法as
- interfaceの方に
[propName: string]: any;
を足しておく - 一度変数に入れる