Aller au contenu principal

Les types en TS

Les types les plus importants

TypeScript, tout comme JavaScript, prend en charge plusieurs types de données qui sont considérés comme des types primitifs. Voici les plus importants :

TypeDescriptionExemple
numberReprésente des nombres (entiers et flottants).let age: number = 30;
stringReprésente des chaînes de caractères.let name: string = 'John';
booleanReprésente une valeur de vérité (true ou false).let isActive: boolean = true;
nullIndique l'absence de valeur.let emptyValue: null = null;
undefinedIndique qu'une variable n'a pas encore été assignée.let notAssigned: undefined;
anyPermet de désactiver la vérification des types pour une variable (à éviter ).let something: any = 5; something = "hello"; somthing=true;
BigIntReprésente des entiers de taille arbitraire.let bigInt: BigInt = 123456789n;

Exemple pour comprendre la différence entre undefined et any :

const getLengthWithUndefined = (input: string | undefined): number => {
// Vérifie si l'input est undefined avant d'essayer de l'utiliser
if (input === undefined) {
return 0; // Gère le cas où input est undefined
}
return input.length; // Safe, car on sait que `input` est une chaîne
};

// Appels de la fonction
console.log(getLengthWithUndefined("Hello")); // Affiche 5
console.log(getLengthWithUndefined(undefined)); // Affiche 0
console.log(getLengthWithAny(123)); // Pas aurorisé par TS
console.log(getLengthWithAny({})); // Pas aurorisé par TS

// Exemple avec `any`
function getLengthWithAny(input: any): number {
// Ne vérifie pas si `input` est une chaîne ou undefined
return input.length; // Cela peut causer une erreur si input n'est pas une chaîne

}

// Appels de la fonction
console.log(getLengthWithAny("Hello")); // Affiche 5
console.log(getLengthWithAny(undefined)); // Provoque une erreur à l'exécution: "Cannot read properties of undefined (reading 'length')"
console.log(getLengthWithAny(123)); // Provoque une erreur à l'exécution: "Cannot read properties of undefined (reading 'length')"
console.log(getLengthWithAny({})); // Provoque une erreur à l'exécution: "Cannot read properties of undefined (reading 'length')"

À Retenir
  • undefined est plus sûr dans le sens où il force à gérer les cas où une valeur n'est pas définie.
  • any est moins sûr car il peut contenir n'importe quel type, ce qui peut conduire à des erreurs. Il ne faut pas l'utiliser dans le cadre de ce cours.
  • une variable peut avoir plusieurs types let value: string | number | boolean;

Exercice

Convertir le code ci-dessous au format type script pour que les 7 appels de fonction soient toujorus possibles.

// Fonction qui calcule la somme de deux nombres ou les concatène si c'est des chaînes
const add = (a, b) => {
return a + b;
};

// Fonction qui vérifie si une chaîne contient une autre chaîne
const contains = (str, substr) => {
return str.includes(substr);
};

// Fonction qui prend un nombre ou une chaîne et retourne sa longueur
const getLength = (input) => {
return input.length;
};

// Fonction qui divise deux nombres mais retourne null si le diviseur est 0
const divide = (a, b) => {
if (b === 0) {
return null;
}
return a / b;
};

// Test des fonctions
console.log(add(5, 10)); // 15
console.log(add(5, "10")); // 510
console.log(add("Hello", "World")); // "HelloWorld"
console.log(contains("TypeScript", "Type")); // true
console.log(getLength("Hello")); // 5
console.log(getLength([1, 2, 3])); // 3
console.log(divide(10, 2)); // 5
console.log(divide(10, 0)); // null