次の違いは何ですか?Typescriptでは、型とインターフェイスの違いは何ですか?
type Foo = {
foo: string
};
interface Foo {
foo: string;
}
次の違いは何ですか?Typescriptでは、型とインターフェイスの違いは何ですか?
type Foo = {
foo: string
};
interface Foo {
foo: string;
}
インタフェースは、は
interface A {
x: number;
}
interface B extends A {
y: string;
}
またを拡張することができる
interface C {
m: boolean;
}
// ... later ...
interface C {
n: number;
}
型の別名を増強しかし、インタフェースは
type NumOrStr = number | string;
type NeatAndCool = Neat & Cool;
type JustSomeOtherName = SomeType;
できないいくつかのものを表すことができ
一般的に、あなたの質問に示されているように単純なオブジェクトタイプを持っているのであれば、インターフェースがより良いアプローチです。インターフェースとして書くことができないものを書こうと思っている場合や、別の名前を付ける場合は、タイプエイリアスが優れています。
'タイプエイリアスはインターフェースができないものを表現することができますあなたの例は' NeatAndCool'と 'JustSomeOtherName'は既存の' Neat'、 'Cool'や' SomeType'タイプを拡張するインターフェースとして作成できます。 –
タイプはインターフェースと似ていますが、その逆も同様です。どちらもクラスで実装できます。 しかし重要な違いがいくつかあります: 1. Typeがクラスによって実装されている場合、Typeに属するプロパティはクラス内で初期化されなければなりませんが、Interfaceではそれらを宣言する必要があります。 2. @ryanは述べました:インタフェースは別のインタフェースを拡張することができます。タイプはできません。
type Person = {
name:string;
age:number;
}
// must initialize all props - unlike interface
class Manager implements Person {
name: string = 'John';
age: number = 55;
// can add props and methods
size:string = 'm';
}
const jane : Person = {
name :'Jane',
age:46,
// cannot add more proprs or methods
//size:'s'
}
タイプは、インターフェイス拡張のように拡張することはできません。型は型の単なるエイリアスです。 – PSL
ガイダンスはこちらから入手できます:https://basarat.gitbooks.io/typescript/content/docs/types/type-system.html#type-alias – basarat
JSONファイルなどの外部データには主にタイプを使用します。 OOPクラスを使用せずに関数を書くだけです。 – Kokodoko