Erreur 1 : Type 'string' is not assignable to type 'number'
Le problème
Dans TypeScript, vous essayez d'affecter une chaîne de caractères à une variable déclarée comme étant un nombre.
let age: number = "25";
Pourquoi c'est une erreur
C'est une erreur car les types number et string sont différents. TypeScript vérifie le type des variables pour éviter les erreurs de logique au runtime.
Impact sur la performance : Aucun impact notable. C'est une erreur de compilation qui peut être détectée rapidement.
Impact sur la sécurité : Pas d'impact direct sur la sécurité, mais elle peut conduire à des erreurs difficiles à déboguer en raison des comportements inattendus.
Impact sur la maintenabilité : Peu impactant, car il s'agit d'une erreur de type. Cependant, cela peut rendre le code moins lisible et plus difficile à comprendre pour d'autres développeurs.
La solution
Convertissez la chaîne de caractères en nombre avant l'affectation.
let age: number = parseInt("25", 10);
Explication : parseInt est une fonction JavaScript qui convertit une chaîne en un entier. Le deuxième argument spécifie la base numérique (dans ce cas, 10 pour le système décimal).
Comment prévenir
Utilisez ESLint avec les règles suivantes :
@typescript-eslint/no-inferrable-types: Évitez d'inférer des types qui sont évidents.@typescript-eslint/explicit-module-boundary-types: Assurez-vous que les fonctions et méthodes ont des types explicites.
Ajoutez également une règle personnalisée pour interdire les affectations de chaînes à des variables numériques :
{
"rules": {
"no-string-to-number-assignment": "error"
}
}
Erreur 2 : Property 'length' does not exist on type 'string'
Le problème
Vous essayez d'accéder à la propriété length sur une variable qui n'est pas une chaîne de caractères.
let age: number = "25";
console.log(age.length);
Pourquoi c'est une erreur
C'est une erreur car la propriété length existe uniquement pour les objets de type string. En essayant d'y accéder sur un autre type, TypeScript génère une erreur.
Impact sur la performance : Aucun impact notable. C'est une erreur de compilation qui peut être détectée rapidement.
Impact sur la sécurité : Pas d'impact direct sur la sécurité, mais elle peut conduire à des erreurs difficiles à déboguer en raison des comportements inattendus.
Impact sur la maintenabilité : Peu impactant, car il s'agit d'une erreur de type. Cependant, cela peut rendre le code moins lisible et plus difficile à comprendre pour d'autres développeurs.
La solution
Vérifiez le type de la variable avant d'y accéder.
let age: number = 25;
if (typeof age === "string") {
console.log(age.length);
} else {
console.log("Age is not a string");
}
Explication : L'opérateur typeof vérifie le type de la variable. Si c'est une chaîne, il accède à la propriété length. Sinon, il affiche un message d'erreur.
Comment prévenir
Utilisez ESLint avec les règles suivantes :
@typescript-eslint/no-unnecessary-type-assertions: Évitez des assertions de type inutiles.@typescript-eslint/prefer-regexp-exec: Préférez l'utilisation deRegExp.execpour extraire des correspondances.
Ajoutez également une règle personnalisée pour interdire l'accès à la propriété length sur des types non-string :
{
"rules": {
"no-length-on-non-string": "error"
}
}
Erreur 3 : Cannot read property 'map' of undefined
Le problème
Vous essayez d'utiliser la méthode Array.prototype.map sur une valeur qui n'est pas un tableau.
let age: number = 25;
let ages = age.map(item => item + 1);
Pourquoi c'est une erreur
C'est une erreur car la méthode map est définie uniquement pour les objets de type Array. En essayant d'y appeler cette méthode sur un autre type, TypeScript génère une erreur.
Impact sur la performance : Aucun impact notable. C'est une erreur de compilation qui peut être détectée rapidement.
Impact sur la sécurité : Pas d'impact direct sur la sécurité, mais elle peut conduire à des erreurs difficiles à déboguer en raison des comportements inattendus.
Impact sur la maintenabilité : Peu impactant, car il s'agit d'une erreur de type. Cependant, cela peut rendre le code moins lisible et plus difficile à comprendre pour d'autres développeurs.
La solution
Vérifiez si la valeur est un tableau avant d'y appeler la méthode map.
let age: number = 25;
if (Array.isArray(age)) {
let ages = age.map(item => item + 1);
} else {
console.log("Age is not an array");
}
Explication : La méthode Array.isArray vérifie si la valeur est un tableau. Si c'est le cas, elle appelle la méthode map. Sinon, elle affiche un message d'erreur.
Comment prévenir
Utilisez ESLint avec les règles suivantes :
@typescript-eslint/no-unnecessary-condition: Évitez des conditions inutiles.@typescript-eslint/no-unexpected-nullish-coalescing: Préférez l'utilisation du coalesce operator (??) pour gérer les valeurs nulles et indéfinies.
Ajoutez également une règle personnalisée pour interdire l'appel de la méthode map sur des types non-array :
{
"rules": {
"no-map-on-non-array": "error"
}
}
Erreur 4 : Type 'string' is not assignable to type 'never'
Le problème
Vous essayez d'affecter une valeur à une variable déclarée comme étant du type never, qui ne peut jamais avoir de valeur.
let neverValue: never = "This should never happen";
Pourquoi c'est une erreur
C'est une erreur car le type never est utilisé pour représenter des valeurs qui ne devraient jamais arriver. En essayant d'affecter une valeur à cette variable, TypeScript génère une erreur.
Impact sur la performance : Aucun impact notable. C'est une erreur de compilation qui peut être détectée rapidement.
Impact sur la sécurité : Pas d'impact direct sur la sécurité, mais elle peut conduire à des erreurs difficiles à déboguer en raison des comportements inattendus.
Impact sur la maintenabilité : Peu impactant, car il s'agit d'une erreur de type. Cependant, cela peut rendre le code moins lisible et plus difficile à comprendre pour d'autres développeurs.
La solution
Vérifiez si la valeur est du type approprié avant d'y affecter une valeur.
let neverValue: never = (() => {
throw new Error("This should never happen");
})();
Explication : Cette fonction anonyme lance une erreur, ce qui rend la variable de type never. C'est une approche dérivée du pattern des "throw errors" pour les types never.
Comment prévenir
Utilisez ESLint avec les règles suivantes :
@typescript-eslint/no-unnecessary-type-assertions: Évitez des assertions de type inutiles.@typescript-eslint/explicit-module-boundary-types: Assurez-vous que les fonctions et méthodes ont des types explicites.
Ajoutez également une règle personnalisée pour interdire l'affectation de valeurs à des variables du type never :
{
"rules": {
"no-assign-to-never": "error"
}
}
Erreur 5 : Property 'push' does not exist on type 'number'
Le problème
Vous essayez d'utiliser la méthode Array.prototype.push sur une variable qui n'est pas un tableau.
let age: number = 25;
age.push(1);
Pourquoi c'est une erreur
C'est une erreur car la méthode push est définie uniquement pour les objets de type Array. En essayant d'y appeler cette méthode sur un autre type, TypeScript génère une erreur.
Impact sur la performance : Aucun impact notable. C'est une erreur de compilation qui peut être détectée rapidement.
Impact sur la sécurité : Pas d'impact direct sur la sécurité, mais elle peut conduire à des erreurs difficiles à déboguer en raison des comportements inattendus.
Impact sur la maintenabilité : Peu impactant, car il s'agit d'une erreur de type. Cependant, cela peut rendre le code moins lisible et plus difficile à comprendre pour d'autres développeurs.
La solution
Vérifiez si la valeur est un tableau avant d'y appeler la méthode push.
let age: number = 25;
if (Array.isArray(age)) {
age.push(1);
} else {
console.log("Age is not an array");
}
Explication : La méthode Array.isArray vérifie si la valeur est un tableau. Si c'est le cas, elle appelle la méthode push. Sinon, elle affiche un message d'erreur.
Comment prévenir
Utilisez ESLint avec les règles suivantes :
@typescript-eslint/no-unnecessary-condition: Évitez des conditions inutiles.@typescript-eslint/no-unexpected-nullish-coalescing: Préférez l'utilisation du coalesce operator (??) pour gérer les valeurs nulles et indéfinies.
Ajoutez également une règle personnalisée pour interdire l'appel de la méthode push sur des types non-array :
{
"rules": {
"no-push-on-non-array": "error"
}
}
Erreur 6 : Type 'string' is not assignable to type 'boolean'
Le problème
Vous essayez d'affecter une valeur de type string à une variable déclarée comme étant du type boolean.
let isActive: boolean = "true";
Pourquoi c'est une erreur
C'est une erreur car les types boolean et string sont différents. TypeScript vérifie le type des variables pour éviter les erreurs de logique au runtime.
Impact sur la performance : Aucun impact notable. C'est une erreur de compilation qui peut être détectée rapidement.
Impact sur la sécurité : Pas d'impact direct sur la sécurité, mais elle peut conduire à des erreurs difficiles à déboguer en raison des comportements inattendus.
Impact sur la maintenabilité : Peu impactant, car il s'agit d'une erreur de type. Cependant, cela peut rendre le code moins lisible et plus difficile à comprendre pour d'autres développeurs.
La solution
Convertissez la chaîne de caractères en booléen avant l'affectation.
let isActive: boolean = Boolean("true");
Explication : La fonction Boolean convertit une valeur en un booléen. Elle retourne true si la valeur est considérée comme "truthy" (par exemple, "true", 1, {}), et false sinon.
Comment prévenir
Utilisez ESLint avec les règles suivantes :
@typescript-eslint/no-inferrable-types: Évitez d'inférer des types qui sont évidents.@typescript-eslint/explicit-module-boundary-types: Assurez-vous que les fonctions et méthodes ont des types explicites.
Ajoutez également une règle personnalisée pour interdire les affectations de chaînes à des variables booléennes :
{
"rules": {
"no-string-to-boolean-assignment": "error"
}
}
Erreur 7 : Type 'number' is not assignable to type 'string'
Le problème
Vous essayez d'affecter une valeur de type number à une variable déclarée comme étant du type string.
let age: string = 25;
Pourquoi c'est une erreur
C'est une erreur car les types number et string sont différents. TypeScript vérifie le type des variables pour éviter les erreurs de logique au runtime.
Impact sur la performance : Aucun impact notable. C'est une erreur de compilation qui peut être détectée rapidement.
Impact sur la sécurité : Pas d'impact direct sur la sécurité, mais elle peut conduire à des erreurs difficiles à déboguer en raison des comportements inattendus.
Impact sur la maintenabilité : Peu impactant, car il s'agit d'une erreur de type. Cependant, cela peut rendre le code moins lisible et plus difficile à comprendre pour d'autres développeurs.
La solution
Convertissez le nombre en chaîne de caractères avant l'affectation.
let age: string = String(25);
Explication : La fonction String convertit une valeur en une chaîne de caractères. Elle retourne la représentation sous forme de texte du nombre.
Comment prévenir
Utilisez ESLint avec les règles suivantes :
@typescript-eslint/no-inferrable-types: Évitez d'inférer des types qui sont évidents.@typescript-eslint/explicit-module-boundary-types: Assurez-vous que les fonctions et méthodes ont des types explicites.
Ajoutez également une règle personnalisée pour interdire les affectations de nombres à des variables string :
{
"rules": {
"no-number-to-string-assignment": "error"
}
}
Erreur 8 : Type 'string' is not assignable to type 'number[]'
Le problème
Vous essayez d'affecter une valeur de type string à une variable déclarée comme étant un tableau de nombres.
let ages: number[] = "25";
Pourquoi c'est une erreur
C'est une erreur car les types number[] et string sont différents. TypeScript vérifie le type des variables pour éviter les erreurs de logique au runtime.
Impact sur la performance : Aucun impact notable. C'est une erreur de compilation qui peut être détectée rapidement.
Impact sur la sécurité : Pas d'impact direct sur la sécurité, mais elle peut conduire à des erreurs difficiles à déboguer en raison des comportements inattendus.
Impact sur la maintenabilité : Peu impactant, car il s'agit d'une erreur de type. Cependant, cela peut rendre le code moins lisible et plus difficile à comprendre pour d'autres développeurs.
La solution
Convertissez la chaîne de caractères en tableau de nombres avant l'affectation.
let ages: number[] = [25];
Explication : Dans ce cas, la chaîne est déjà un tableau de nombres. Si c'est une chaîne séparée par des virgules, vous pouvez utiliser split et map pour la convertir en tableau de nombres.
let ages: number[] = "25".split(",").map(Number);
Comment prévenir
Utilisez ESLint avec les règles suivantes :
@typescript-eslint/no-inferrable-types: Évitez d'inférer des types qui sont évidents.@typescript-eslint/explicit-module-boundary-types: Assurez-vous que les fonctions et méthodes ont des types explicites.
Ajoutez également une règle personnalisée pour interdire les affectations de chaînes à des variables tableau de nombres :
{
"rules": {
"no-string-to-number-array-assignment": "error"
}
}
Erreur 9 : Type 'number' is not assignable to type 'string[]'
Le problème
Vous essayez d'affecter une valeur numérique à une variable déclarée comme étant un tableau de chaînes.
let names: string[] = 25;
Pourquoi c'est une erreur
C'est une erreur car les types number et string[] sont différents. TypeScript vérifie le type des variables pour éviter les erreurs de logique au runtime.
Impact sur la performance : Aucun impact notable. C'est une erreur de compilation qui peut être détectée rapidement.
Impact sur la sécurité : Pas d'impact direct sur la sécurité, mais elle peut conduire à des erreurs difficiles à déboguer en raison des comportements inattendus.
Impact sur la maintenabilité : Peu impactant, car il s'agit d'une erreur de type. Cependant, cela peut rendre le code moins lisible et plus difficile à comprendre pour d'autres développeurs.
La solution
Convertissez le nombre en chaîne de caractères avant l'affectation.
let names: string[] = ["Alice", "Bob"];
Explication : Dans ce cas, il s'agit déjà d'un tableau de chaînes. Si vous avez un seul nom et que vous voulez le convertir en tableau, utilisez split ou une autre méthode appropriée.
let names: string[] = "Alice,Bob".split(",");
Comment prévenir
Utilisez ESLint avec les règles suivantes :
@typescript-eslint/no-inferrable-types: Évitez d'inférer des types qui sont évidents.@typescript-eslint/explicit-module-boundary-types: Assurez-vous que les fonctions et méthodes ont des types explicites.
Ajoutez également une règle personnalisée pour interdire les affectations de nombres à des variables tableau de chaînes :
{
"rules": {
"no-number-to-string-array-assignment": "error"
}
}
Erreur 10 : Type 'boolean' is not assignable to type 'string'
Le problème
Vous essayez d'affecter une valeur booléenne à une variable déclarée comme étant du type string.
let isActive: string = true;
Pourquoi c'est une erreur
C'est une erreur car les types boolean et string sont différents. TypeScript vérifie le type des variables pour éviter les erreurs de logique au runtime.
Impact sur la performance : Aucun impact notable. C'est une erreur de compilation qui peut être détectée rapidement.
Impact sur la sécurité : Pas d'impact direct sur la sécurité, mais elle peut conduire à des erreurs difficiles à déboguer en raison des comportements inattendus.
Impact sur la maintenabilité : Peu impactant, car il s'agit d'une erreur de type. Cependant, cela peut rendre le code moins lisible et plus difficile à comprendre pour d'autres développeurs.
La solution
Convertissez le booléen en chaîne de caractères avant l'affectation.
let isActive: string = String(true);
Explication : La fonction String convertit une valeur en une chaîne de caractères. Elle retourne la représentation sous forme de texte du booléen.
Comment prévenir
Utilisez ESLint avec les règles suivantes :
@typescript-eslint/no-inferrable-types: Évitez d'inférer des types qui sont évidents.@typescript-eslint/explicit-module-boundary-types: Assurez-vous que les fonctions et méthodes ont des types explicites.
Ajoutez également une règle personnalisée pour interdire les affectations de booléens à des variables string :
{
"rules": {
"no-boolean-to-string-assignment": "error"
}
}
Erreur 11 : Type 'string' is not assignable to type 'boolean'
Le problème
Vous essayez d'affecter une valeur de type string à une variable déclarée comme étant du type boolean.
let isActive: boolean = "true";
Pourquoi c'est une erreur
C'est une erreur car les types boolean et string sont différents. TypeScript vérifie le type des variables pour éviter les erreurs de logique au runtime.
Impact sur la performance : Aucun impact notable. C'est une erreur de compilation qui peut être détectée rapidement.
Impact sur la sécurité : Pas d'impact direct sur la sécurité, mais elle peut conduire à des erreurs difficiles à déboguer en raison des comportements inattendus.
Impact sur la maintenabilité : Peu impactant, car il s'agit d'une erreur de type. Cependant, cela peut rendre le code moins lisible et plus difficile à comprendre pour d'autres développeurs.
La solution
Convertissez la chaîne en booléen avant l'affectation.
let isActive: boolean = Boolean("true");
Explication : La fonction Boolean convertit une valeur en un booléen. Elle retourne true si la valeur est considérée comme "truthy" (par exemple, "true", 1, {}), et false sinon.
Comment prévenir
Utilisez ESLint avec les règles suivantes :
@typescript-eslint/no-inferrable-types: Évitez d'inférer des types qui sont évidents.@typescript-eslint/explicit-module-boundary-types: Assurez-vous que les fonctions et méthodes ont des types explicites.
Ajoutez également une règle personnalisée pour interdire les affectations de chaînes à des variables booléennes :
{
"rules": {
"no-string-to-boolean-assignment": "error"
}
}
Erreur 12 : Type 'number' is not assignable to type 'string[]'
Le problème
Vous essayez d'affecter une valeur numérique à une variable déclarée comme étant un tableau de chaînes.
let names: string[] = 25;
Pourquoi c'est une erreur
C'est une erreur car les types number et string[] sont différents. TypeScript vérifie le type des variables pour éviter les erreurs de logique au runtime.
Impact sur la performance : Aucun impact notable. C'est une erreur de compilation qui peut être détectée rapidement.
Impact sur la sécurité : Pas d'impact direct sur la sécurité, mais elle peut conduire à des erreurs difficiles à déboguer en raison des comportements inattendus.
Impact sur la maintenabilité : Peu impactant, car il s'agit d'une erreur de type. Cependant, cela peut rendre le code moins lisible et plus difficile à comprendre pour d'autres développeurs.
La solution
Convertissez le nombre en chaîne de caractères avant l'affectation.
let names: string[] = ["Alice", "Bob"];
Explication : Dans ce cas, il s'agit déjà d'un tableau de chaînes. Si vous avez un seul nom et que vous voulez le convertir en tableau, utilisez split ou une autre méthode appropriée.
let names: string[] = "Alice,Bob".split(",");
Comment prévenir
Utilisez ESLint avec les règles suivantes :
@typescript-eslint/no-inferrable-types: Évitez d'inférer des types qui sont évidents.@typescript-eslint/explicit-module-boundary-types: Assurez-vous que les fonctions et méthodes ont des types explicites.
Ajoutez également une règle personnalisée pour interdire les affectations de nombres à des variables tableau de chaînes :
{
"rules": {
"no-number-to-string-array-assignment": "error"
}
}
Erreur 13 : Type 'boolean' is not assignable to type 'number'
Le problème
Vous essayez d'affecter une valeur booléenne à une variable déclarée comme étant du type number.
let isActive: number = true;
Pourquoi c'est une erreur
C'est une erreur car les types boolean et number sont différents. TypeScript vérifie le type des variables pour éviter les erreurs de logique au runtime.
Impact sur la performance : Aucun impact notable. C'est une erreur de compilation qui peut être détectée rapidement.
Impact sur la sécurité : Pas d'impact direct sur la sécurité, mais elle peut conduire à des erreurs difficiles à déboguer en raison des comportements inattendus.
Impact sur la maintenabilité : Peu impactant, car il s'agit d'une erreur de type. Cependant, cela peut rendre le code moins lisible et plus difficile à comprendre pour d'autres développeurs.
La solution
Convertissez le booléen en nombre avant l'affectation.
let isActive: number = Number(true);
Explication : La fonction Number convertit une valeur en un nombre. Elle retourne 1 si la valeur est considérée comme "truthy" (par exemple, true, "1"), et 0 sinon.
Comment prévenir
Utilisez ESLint avec les règles suivantes :
@typescript-eslint/no-inferrable-types: Évitez d'inférer des types qui sont évidents.@typescript-eslint/explicit-module-boundary-types: Assurez-vous que les fonctions et méthodes ont des types explicites.
Ajoutez également une règle personnalisée pour interdire les affectations de booléens à des variables numériques :
{
"rules": {
"no-boolean-to-number-assignment": "error"
}
}
Erreur 14 : Type 'string' is not assignable to type 'number'
Le problème
Vous essayez d'affecter une valeur de type string à une variable déclarée comme étant du type number.
let count: number = "5";
Pourquoi c'est une erreur
C'est une erreur car les types string et number sont différents. TypeScript vérifie le type des variables pour éviter les erreurs de logique au runtime.
Impact sur la performance : Aucun impact notable. C'est une erreur de compilation qui peut être détectée rapidement.
Impact sur la sécurité : Pas d'impact direct sur la sécurité, mais elle peut conduire à des erreurs difficiles à déboguer en raison des comportements inattendus.
Impact sur la maintenabilité : Peu impactant, car il s'agit d'une erreur de type. Cependant, cela peut rendre le code moins lisible et plus difficile à comprendre pour d'autres développeurs.
La solution
Convertissez la chaîne en nombre avant l'affectation.
let count: number = Number("5");
Explication : La fonction Number convertit une valeur en un nombre. Elle retourne le nombre correspondant à la chaîne ou NaN si la chaîne ne peut pas être convertie en un nombre.
Comment prévenir
Utilisez ESLint avec les règles suivantes :
@typescript-eslint/no-inferrable-types: Évitez d'inférer des types qui sont évidents.@typescript-eslint/explicit-module-boundary-types: Assurez-vous que les fonctions et méthodes ont des types explicites.
Ajoutez également une règle personnalisée pour interdire les affectations de chaînes à des variables numériques :
{
"rules": {
"no-string-to-number-assignment": "error"
}
}
Erreur 15 : Type 'number' is not assignable to type 'string[]'
Le problème
Vous essayez d'affecter une valeur numérique à une variable déclarée comme étant un tableau de chaînes.
let names: string[] = 25;
Pourquoi c'est une erreur
C'est une erreur car les types number et string[] sont différents. TypeScript vérifie le type des variables pour éviter les erreurs de logique au runtime.
Impact sur la performance : Aucun impact notable. C'est une erreur de compilation qui peut être détectée rapidement.
Impact sur la sécurité : Pas d'impact direct sur la sécurité, mais elle peut conduire à des erreurs difficiles à déboguer en raison des comportements inattendus.
Impact sur la maintenabilité : Peu impactant, car il s'agit d'une erreur de type. Cependant, cela peut rendre le code moins lisible et plus difficile à comprendre pour d'autres développeurs.
La solution
Convertissez le nombre en chaîne de caractères avant l'affectation.
let names: string[] = ["Alice", "Bob"];
Explication : Dans ce cas, il s'agit déjà d'un tableau de chaînes. Si vous avez un seul nom et que vous voulez le convertir en tableau, utilisez split ou une autre méthode appropriée.
let names: string[] = "Alice,Bob".split(",");
Comment prévenir
Utilisez ESLint avec les règles suivantes :
@typescript-eslint/no-inferrable-types: Évitez d'inférer des types qui sont évidents.@typescript-eslint/explicit-module-boundary-types: Assurez-vous que les fonctions et méthodes ont des types explicites.
Ajoutez également une règle personnalisée pour interdire les affectations de nombres à des variables tableau de chaînes :
{
"rules": {
"no-number-to-string-array-assignment": "error"
}
}
Erreur 16 : Type 'boolean' is not assignable to type 'number[]'
Le problème
Vous essayez d'affecter une valeur booléenne à une variable déclarée comme étant un tableau de nombres.
let activeIndices: number[] = true;
Pourquoi c'est une erreur
C'est une erreur car les types boolean et number[] sont différents. TypeScript vérifie le type des variables pour éviter les erreurs de logique au runtime.
Impact sur la performance : Aucun impact notable. C'est une erreur de compilation qui peut être détectée rapidement.
Impact sur la sécurité : Pas d'impact direct sur la sécurité, mais elle peut conduire à des erreurs difficiles à déboguer en raison des comportements inattendus.
Impact sur la maintenabilité : Peu impactant, car il s'agit d'une erreur de type. Cependant, cela peut rendre le code moins lisible et plus difficile à comprendre pour d'autres développeurs.
La solution
Convertissez le booléen en nombre avant l'affectation.
let activeIndices: number[] = [Number(true)];
Explication : La fonction Number convertit une valeur en un nombre. Elle retourne 1 si la valeur est considérée comme "truthy" (par exemple, true, "1"), et 0 sinon.
Comment prévenir
Utilisez ESLint avec les règles suivantes :
@typescript-eslint/no-inferrable-types: Évitez d'inférer des types qui sont évidents.@typescript-eslint/explicit-module-boundary-types: Assurez-vous que les fonctions et méthodes ont des types explicites.
Ajoutez également une règle personnalisée pour interdire les affectations de booléens à des variables numériques :
{
"rules": {
"no-boolean-to-number-array-assignment": "error"
}
}
Erreur 17 : Type 'string' is not assignable to type 'number[]'
Le problème
Vous essayez d'affecter une valeur de type string à une variable déclarée comme étant un tableau de nombres.
let activeIndices: number[] = "5";
Pourquoi c'est une erreur
C'est une erreur car les types string et number[] sont différents. TypeScript vérifie le type des variables pour éviter les erreurs de logique au runtime.
Impact sur la performance : Aucun impact notable. C'est une erreur de compilation qui peut être détectée rapidement.
Impact sur la sécurité : Pas d'impact direct sur la sécurité, mais elle peut conduire à des erreurs difficiles à déboguer en raison des comportements inattendus.
Impact sur la maintenabilité : Peu impactant, car il s'agit d'une erreur de type. Cependant, cela peut rendre le code moins lisible et plus difficile à comprendre pour d'autres développeurs.
La solution
Convertissez la chaîne en nombre avant l'affectation.
let activeIndices: number[] = [Number("5")];
Explication : La fonction Number convertit une valeur en un nombre. Elle retourne le nombre correspondant à la chaîne ou NaN si la chaîne ne peut pas être convertie en un nombre.
Comment prévenir
Utilisez ESLint avec les règles suivantes :
@typescript-eslint/no-inferrable-types: Évitez d'inférer des types qui sont évidents.@typescript-eslint/explicit-module-boundary-types: Assurez-vous que les fonctions et méthodes ont des types explicites.
Ajoutez également une règle personnalisée pour interdire les affectations de chaînes à des variables numériques :
{
"rules": {
"no-string-to-number-array-assignment": "error"
}
}
Erreur 18 : Type 'number' is not assignable to type 'boolean[]'
Le problème
Vous essayez d'affecter une valeur numérique à une variable déclarée comme étant un tableau de booléens.
let activeFlags: boolean[] = 25;
Pourquoi c'est une erreur
C'est une erreur car les types number et boolean[] sont différents. TypeScript vérifie le type des variables pour éviter les erreurs de logique au runtime.
Impact sur la performance : Aucun impact notable. C'est une erreur de compilation qui peut être détectée rapidement.
Impact sur la sécurité : Pas d'impact direct sur la sécurité, mais elle peut conduire à des erreurs difficiles à déboguer en raison des comportements inattendus.
Impact sur la maintenabilité : Peu impactant, car il s'agit d'une erreur de type. Cependant, cela peut rendre le code moins lisible et plus difficile à comprendre pour d'autres développeurs.
La solution
Convertissez le nombre en booléen avant l'affectation.
let activeFlags: boolean[] = [Number(25) !== 0];
Explication : Dans ce cas, vous pouvez convertir le nombre à boolean en vérifiant si il est différent de 0. En effet, en TypeScript, 0, NaN, null, undefined, et les chaînes vides sont considérés comme false, tandis que tous les autres valeurs sont considérées comme true.
Comment prévenir
Utilisez ESLint avec les règles suivantes :
@typescript-eslint/no-inferrable-types: Évitez d'inférer des types qui sont évidents.@typescript-eslint/explicit-module-boundary-types: Assurez-vous que les fonctions et méthodes ont des types explicites.
Ajoutez également une règle personnalisée pour interdire les affectations de nombres à des variables booléennes :
{
"rules": {
"no-number-to-boolean-array-assignment": "error"
}
}