タイプスクリプトにおける型対インタフェース
7211 ワード
注:この記事の「型」という用語は、typescriptの「
official Typescript documentによると、「typescriptは、静的なタイプ定義を加えることによって、JavaScript(世界で最も使用されたツールのうちの1つ)を構築するオープンソース言語です.」私たちのプロジェクトでtypescriptを実装するのは、長い間、多くの時間を節約します.しかし、開発者として、我々はベストプラクティスと標準TypeScriptでの種類の作業時に従う必要があります.
この記事では、2つのタイプ
由来
インターフェイスは、オブジェクトの形状/構造などのデータ構造を定義するために使用されます.
型はデータの型を定義するために使用されます.たとえば、プリミティブ、ユニオン、交差、タプルデータ型.
型評価時間
型評価期間に微妙なキー差があります.
型宣言構文
両方の型とインターフェイスを同様の方法で使用できますが、宣言構文は異なります.
キーワードの拡張と実装
タイプスクリプトでは、
交差点
我々は242479142の複数の
労働組合
Union型は、“
私たちは、複数の
合併の宣言
type
」別名に言及していますofficial Typescript documentによると、「typescriptは、静的なタイプ定義を加えることによって、JavaScript(世界で最も使用されたツールのうちの1つ)を構築するオープンソース言語です.」私たちのプロジェクトでtypescriptを実装するのは、長い間、多くの時間を節約します.しかし、開発者として、我々はベストプラクティスと標準TypeScriptでの種類の作業時に従う必要があります.
この記事では、2つのタイプ
type
のエイリアスとinterface
の違いを見ます.多くの開発者は、これらの2つの本当の違いを本当に知りません.違いを知って、我々は我々のために最高のユースケースに従ってこれらを実装することができます.由来
インターフェイスは、オブジェクトの形状/構造などのデータ構造を定義するために使用されます.
型はデータの型を定義するために使用されます.たとえば、プリミティブ、ユニオン、交差、タプルデータ型.
型評価時間
型評価期間に微妙なキー差があります.
type
のエイリアスに対するタイプ評価は即時ですが、interface
のタイプ評価は怠惰です.型宣言構文
両方の型とインターフェイスを同様の方法で使用できますが、宣言構文は異なります.
type BulldogType = {
name: string;
height: number;
weight: number;
}
interface BulldogInterface {
name: string;
height: number;
weight: number;
}
キーワードの拡張と実装
タイプスクリプトでは、
interface
を使用して型を拡張して実装できます.これはtype
エイリアスを使用することはできません.interface Dog {
breed: string;
}
interface Bulldog extends Dog {
isCute: true;
}
交差点
我々は242479142の複数の
types
とinterface
をシングル&
に組み入れることができます.しかし、我々はそれらを一つのtype
に結合することはできません.type Bulldog = { }
type GermanShepherd = {}
type DogBreeds = Bulldog & GermanShepherd; // valid
interface IBulldog {}
interface IGermanShepherd {}
type IDogBreeds = IBulldog & IGermanShepherd; // valid
労働組合
Union型は、“
interface
”キーワードで1つまたは2つ以上の他の型の値を持つことができる新しい型を作成できます.私たちは、複数の
|
とtypes
をユニオンのキーワードと組み合わせることができます.しかし、我々はそれらを一つのinterface
に結合することはできません.type Bulldog = { }
type GermanShepherd = {}
type DogBreeds = Bulldog | GermanShepherd; // valid
interface IBulldog {}
interface IGermanShepherd {}
type IDogBreeds = IBulldog | IGermanShepherd; // valid
合併の宣言
type
は、合併を宣言するのを許します.interface IBulldog {
name: string;
}
interface IBulldog {
weight: number;
}
const bruno: IBulldog = {
name: "Bruno",
weight: 22
}
しかし、interface
別名を使用してタイプが作成されると、interface
エイリアスを変更できません.したがって、宣言のマージはtype
エイリアスでは不可能です.type IBulldog = {
name: string;
}
type IBulldog = {
weight: number;
}
// Error: Duplicate identifier 'IBulldog'
Reference
この問題について(タイプスクリプトにおける型対インタフェース), 我々は、より多くの情報をここで見つけました https://dev.to/ananta/types-vs-interfaces-in-typescript-1g3pテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol