Comment on page
Types
let value: boolean;
value = true;
let value: number;
value = 10;
value = 10.3;
value = Infinity;
value = NaN;
let value: string;
value = 'Foo BAR';
let value: string[];
value = ['Angular', 'Python'];
value.push(42); // error TS2345: Argument of type 'number' is not assignable to parameter of type 'string'.
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...
enum Role {
Coder = 'coder',
Developer = 'developer'
}
let role: Role;
role = Role.Developer;
console.log(role); // developer
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
.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!
Dernière mise à jour 5yr ago