Quelles sont les différences entre la suivante?
type Foo = {
foo: string
};
interface Foo {
foo: string;
}
Quelles sont les différences entre la suivante?
type Foo = {
foo: string
};
interface Foo {
foo: string;
}
Les Interfaces peuvent être prolongée
interface A {
x: number;
}
interface B extends A {
y: string;
}
et aussi augmentée
interface C {
m: boolean;
}
// ... later ...
interface C {
n: number;
}
Type d'alias, cependant, peuvent représenter certaines choses interfaces ne peuvent pas
type NumOrStr = number | string;
type NeatAndCool = Neat & Cool;
type JustSomeOtherName = SomeType;
Donc, en général, si vous avez juste un simple type d'objet, comme indiqué dans votre question, une interface est généralement une meilleure approche. Si vous vous trouvez vouloir écrire quelque chose qui ne peut pas être écrit comme une interface, ou voulez juste donner quelque chose d'un autre nom, un type d'alias, c'est mieux.
Les différences entre ces trop sont déjà dans ce fil.
type Foo = {
foo: string
};
interface Foo {
foo: string;
}
Ici, type Foo
etinterface Foo
semble à peu près semblable, de sorte que son confus.
interface
du contrat est que les propriétés suivantes (icifoo:string
) devrait être là dans un objet.
interface
n'est class
. Il est utilisé quand le langage ne supporte pas l'Héritage Multiple. Donc, interface
peut être une structure commune entre les différentes classes.
class Bar implements Foo {
foo: string;
}
let p: Foo = { foo: 'a string' };
Maistype
et interface
sont utilisés dans le contexte très différent.
let foo: Foo;
let today: Date = new Date();
Ici, type
de foo
est Foo
et today
est Date
.
C'est comme une variable decleration qui détient les informations de typeof d'une autre variable.
type
, c'est comme un sur-ensemble des interfaces, classes, signature de fonction, les autres types de valeurs (comme type mood = 'Good' | 'Bad'
).
À la fin de l' type
décrit la structure ou de la valeur d'une variable.
La spec a une bonne discussion - https://github.com/Microsoft/TypeScript/blob/master/doc/spec.md#3.10
Types est un peu comme les Interfaces et vice-versa: les deux peuvent implémentée par une classe. mais il ya quelques différences importantes: 1. quand le Type est implémentée par une classe, les propriétés qui appartiennent au Type doit être initialisée à l'intérieur de la classe, alors qu'avec une Interface qu'ils doivent être déclarés. 2. @ryan mentionnés : l'Interface peut étendre une autre Interface. Types de ne peut pas.
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'
}
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.