Advanced Typescript
Typescript

Type Aliases

Un type alias permet de donner un nom à un type pour le réutiliser plus facilement.
Cela peut être un type primitif, un objet, une union, une intersection, etc.

type  = string | number
type  = `#${string}`

type  = {
  : ;
  : string;
  : ;
  : boolean;
}

On peut alors l'utiliser pour typer nos variables:

const :  = {
  : 1,
  : "john",
  : "#ff0",
  : true,
}

Notez l'utilisation d'un type literal pour le type Color.
Cela permet de définir un pattern à respecter sur une string:

const invalidHexaDecimal:  = 'red'
Type '"red"' is not assignable to type '`#${string}`'.

type vs interface

En TypeScript, on peut aussi décrire la forme d'un objet avec une interface. Alors, quand utiliser l'un ou l'autre ?

interface IUser {
  : string | number;
  : string;
}

Voici les deux différences principales :

  • L'extensibilité (Declaration Merging)
    Une interface peut être définie plusieurs fois et sera "fusionnée". C'est très utile pour étendre des types existants, notamment dans des librairies externes. Un type ne peut pas être redéclaré.
interface Animal {
  : string;
}
interface Animal {
  : number;
}
const : Animal = { : "Rex", : 5 }; 

type MyType = { : string };
Duplicate identifier 'MyType'.
type MyType = { : number };
Duplicate identifier 'MyType'.
  • La flexibilité des type
    Un type est plus flexible. Il peut représenter non seulement des objets, mais aussi des unions, des tuples, ou tout autre type. Une interface est principalement dédiée à la description de la forme des objets.

Recommandation simple :

  • Utilisez une interface quand vous décrivez la "forme" d'un objet ou d'une classe, surtout si elle est destinée à être étendue.
  • Utilisez un type pour tout le reste : types unions, intersections, types primitifs, etc.

On this page