ちらしの裏( Typescript 奮闘記 No.01 )

ちらしの裏っぽく、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を再定義する事もできる。