いきさつ
いつもてきとーにつかってますが、イマイチわかってませんでした。
何が違うの?
なぜそんなものがあるの?
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
最近のコメント