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