ちらしの裏っぽく、TypeScriptの勉強をまとめていく〜
Objectの構造を定義するもの
type, interface, class ってやつがある。
とりあえず Interface を勉強した
Interface
Property
interface Item { name: string; price: number; }
Customer の Interface は name と age の プロパティを持っています。 Interfaceでプロパティを定義すると、そのInterfaceを実装するオブジェクトは 定義されたプロパティを持たなければならない。
const pencil: Item = { name: "鉛筆", price: 110 }
Interface は 型なので、別のInterfaceから参照する事もできる
interface SaleRow { item: Item total: number }
method
また、メソッドのコントラクト的なのを定義できる。ただし、メソッドの実装を定義するものではない。
interface Item { name: string; price: number; getDiscountPrice(discountRate: number): number; }
- パラメータの型さえ同じなら、実は
discountRate
の部分をdiscountPercentage
とかに変えても動く - でも、メソッド名を変更したり、パラメータの型や戻り値の型を変えるとコンパイルは通らない
- 上記の事もあって、Interfaceにて メソッドを定義する場合は、パラメータ名を定義しない事も風習としてある。
interface Item { name: string; price: number; getDiscountPrice(number): number; }
Option
interface Item { name: string; price: number; image?: string; getDiscountPrice(discountRate: number): number; }
上記のように ?
をつけて宣言する事で、Optionalの型を定義できる
Readonly
- プロパティの前に readonly キーワードを使用する事で、最初に設定された後にプロパティが更新できないようにする.
Extend
既にあるInterfaceについて それを拡張して新しいInterfaceを再定義する事もできる。