Devsway

日々の記録とか記憶とか。


いきさつ


いつもてきとーにつかってますが、イマイチわかってませんでした。

何が違うの?

なぜそんなものがあるの?


interface


常に名前付きのオブジェクトになる


いわゆるオブジェクト指向におけるClassに対してのinterface。

なのでextendやimplementsとして使うことができる。



type


集まり。

拡張(extend)とかできない。

インスタンスの新しい名前を作成しない。

名前に特に意味はなく変数咬ませない場合は不要。

変数咬ませる場合はそれをtype aliasとか言ったりするみたい。

主にユニオンやタプルタイプの場合に使用する。


補足ユニオンとタプルタイプの違いとは?


ユニオンtype


// どっちか
type foo = string | number;

タプルとは?

複数の構成要素からなる組を総称する一般概念。

….ということでこんな感じ


// key:valとかの型も定義できる。
let tuple: [number, boolean] = [1, true];

結論


基本的にはインターフェイスを使うはず。

そしてそれを組みわせて使うときにはtype。

こんなかんじ。


// インターフェイスと
interface ICarParts {
    name: string,
    weight: number
}

// インターフェイスを
interface IBikeParts {
    name: string,
    weight: number
}

// 組み合わせてtype aliasを作る
type Products = ICarParts | IBikeParts

// いずれかのパーツであることを保証する
function getProduct():Products{
    //todo:
}



翻訳


https://www.typescriptlang.org/docs/handbook/advanced-types.html#interfaces-vs-type-aliases




カテゴリー

オレオレIT用語辞典