Réponses:
Tout ce que vous avez à faire est de définir votre resultcomme un tableau de chaînes, comme suit:
const result : string[] = [];
Sans définir le type de tableau, il le sera par défaut never. Ainsi, lorsque vous avez essayé d'y ajouter une chaîne, il s'agissait d'une incompatibilité de type, et cela a donc généré l'erreur que vous avez vue.
nevers sera utile. Mais en y regardant, je suis tombé sur cette réponse qui contient de bonnes informations.
let x;), elle est de type anypar défaut. Non never.
any[]. A été surpris que ce soit never[]ce qui le rend inutile. Pas intuitif. Merci d'avoir répondu. edit: grammar
Une autre façon est:
const result = [] as any;
anyn'est pas une bonne option, car elle désactive essentiellement toutes les fonctionnalités de TypeScript. C'est une solution de contournement et peut conduire à divers bogues.
Cela semble être une régression récente ou un comportement étrange dans le tapuscrit. Si vous avez le code:
const result = []
Habituellement, ce serait traité comme si vous écriviez:
const result:any[] = []
cependant, si vous avez noImplicitAnyFALSE et AND strictNullChecks TRUE dans votre tsconfig, il est traité comme:
const result:never[] = []
Ce comportement défie toute logique, à mon humble avis. L'activation des vérifications nulles modifie les types d'entrée d'un tableau ?? Et puis allumernoImplicitAny rétablit réellement l'utilisation de anysans aucun avertissement ??
Lorsque vous avez vraiment un tableau de any, vous ne devriez pas avoir besoin de l'indiquer avec du code supplémentaire.
J'avais la même erreur dans la fonction sans état ReactJS lors de l'utilisation de ReactJs Hook useState . Je voulais définir l'état d'un tableau d'objets, donc si j'utilise la manière suivante
const [items , setItems] = useState([]);
et mettez à jour l'état comme ceci:
const item = { id : new Date().getTime() , text : 'New Text' };
setItems([ item , ...items ]);
J'obtenais une erreur:
Argument de type '{id: number; text: any} 'n'est pas assignable au paramètre de type' never '
mais si fais-le comme ça,
const [items , setItems] = useState([{}]);
L'erreur a disparu mais il y a un élément à l' index 0 qui ne contient aucune donnée (je ne le veux pas)
donc la solution que j'ai trouvée est:
const [items , setItems] = useState([] as any);
J'ai eu la même erreur dans le composant de fonction ReactJS, en utilisant le hook useState de ReactJS. La solution était de déclarer le type de useState lors de l'initialisation:
const [items , setItems] = useState<IItem[]>([]); // replace IItem[] with your own typing: string, boolean...
La solution que j'ai trouvée était
const [files, setFiles] = useState([] as any);
Supprimez "strictNullChecks": true de "compilerOptions" ou définissez-le sur false dans le fichier tsconfig.json de votre application Ng. Ces erreurs disparaîtront comme n'importe quoi et votre application se compilerait avec succès.
Avertissement : Ceci est juste une solution de contournement. Cette erreur n'apparaît que lorsque les vérifications nulles ne sont pas gérées correctement, ce qui n'est en aucun cas un bon moyen de faire avancer les choses.
never[]? y a-t-il jamais une utilisation pour cela sauf "un tableau qui sera TOUJOURS vide?"