Links
Comment on page

Types

Les types les plus fréquents

boolean

let value: boolean;
value = true;

number

let value: number;
value = 10;
value = 10.3;
value = Infinity;
value = NaN;

string

let value: string;
value = 'Foo BAR';

array

let value: string[];
value = ['Angular', 'Python'];
value.push(42); // error TS2345: Argument of type 'number' is not assignable to parameter of type 'string'.

enum

enum Role {
Coder,
Developer
}
let role: Role;
role = Role.Developer;
console.log(role); // 1
console.log(Role[role]); // Developer
Comme dans de nombreux langages, il est préférable d'éviter les enums à auto-incrément pour les raisons suivantes :
  • Ce type d'enums décourage le refactoring car il est nécessaire de "rebuild" toutes les applications et librairies qui en dépendent. (On revient aux problèmes de compatibilité binaire etc...)
  • Le debug est moins pratique.
  • Il faut absolument passer par un serializer/deserializer pour communiquer la valeur avec d'autres applications, services etc...

string enum

enum Role {
Coder = 'coder',
Developer = 'developer'
}
let role: Role;
role = Role.Developer;
console.log(role); // developer

Number, String, Boolean and Object

N'utilisez jamais les types suivants : Number, String, Boolean et Object.
Ce ne sont pas les types primitifs. Considérez-les comme "legacy". Au lieu de Object, utilisez le type TypeScript object.

Paramètres optionnels

Contrairement à l'ECMAScript où tous les paramètres sont considérés optionnels, en TypeScript, les paramètres doivent être explicitement indiqués comme optionnels avec la syntaxe suivante :
const sendMessage = (email: string, message: string, subject?: string) => {
console.log(`${email}: [${subject}] ${message}`);
};
sendMessage(); // error TS2554: Expected 2-3 arguments, but got 0.
sendMessage('[email protected]', 'Help!'); // [email protected]: [undefined] Help!
sendMessage('[email protected]', 'Help!', 'Coaching'); // [email protected]: [Coaching] Help!
... ou en spécifiant une valeur par défaut :
const sendMessage = (email: string, message: string, subject: string = null) => {
console.log(`${email}: [${subject}] ${message}`);
};
sendMessage('[email protected]', 'Help!'); // [email protected]: [null] Help!