TypeScript : comment corriger l'erreur Argument of type 'string' is not assignable to parameter of type 'never ?

Le langage TypeScript est une surcouche au langage JavaScript. Il a été conçu pour apporter davantage de rigueur à la syntaxe tout en restant optionnel. Comme il s'agit d'une surcouche, n'importe quel programme JavaScript fonctionne en TypeScript. Il ajoute un typage fort pour les variables et est un langage orienté objet, proche d'autres langages du même type, comme C#. Un code écrit en TypeScript sera compilé par un transcompilateur pour devenir du code JavaScript que pourra exécuter un navigateur. Ce typage fort, pour un développeur connaissant déjà JavaScript, nécessite d'apprendre de nouvelles choses et de s'adapter.

Dans le langage JavaScript, le type est dynamique, on peut changer de type comme on veut sans provoquer d'erreur.

//Ce morceau de code fonctionne
var maVariable = "toto",
maVariable = 2,

Lorsque vous choisissez d'utiliser le typage fort avec TypeScript, vous devez faire attention aux types de vos variables. Par exemple, si vous manipulez une chaîne de caractères, vous ne pouvez pas la stocker dans un tableau sans type. En effet, vous obtiendrez le message d'erreur : "Argument of type 'string' is not assignable to parameter of type 'never'.". Le type "Never" correspond à une non-définition d'un type. Il indique que l'on choisit d'utiliser le typage dynamique de JavaScript et non le typage fort de TypeScript.

const fonction = (chaine: string) => {
  const tableau = []
  tableau.push(chaine)
}
//Affiche le message d'erreur : "Argument of type 'string' is not assignable to parameter of type 'never'."

En TypeScript, une variable d'un type déterminé ne peut être contenue que dans un tableau de ce type. On ne peut pas mixer les types. C'est le même fonctionnement qu'en Java ou C++ par exemple. Vous devez donc indiquer que votre tableau est un tableau de chaîne de caractères pour que votre code soit correct.

const fonction = (chaine: string) => {
  const tableau : string[] = []
  tableau.push(chaine)
}
//Le code est juste

JavaScript