Respuestas:
Todo lo que tiene que hacer es definir su resultcomo una matriz de cadenas, como la siguiente:
const result : string[] = [];
Sin definir el tipo de matriz, por defecto será never. Entonces, cuando trataste de agregarle una cadena, fue un desajuste de tipo, y arrojó el error que viste.
nevers sea útil. Pero mientras lo investigaba me encontré con esta respuesta que tiene una gran información.
let x;), es de tipo anypor defecto. No never.
any[]. Me sorprendió que fuera never[]lo que lo hace inútil. Poco intuitivo. Gracias por la respuesta. editar: gramática
Otra forma es:
const result = [] as any;
anyno es una buena opción, ya que básicamente desactiva cualquier característica de TypeScript. Es una solución alternativa y puede provocar varios errores.
Esto parece ser una regresión reciente o algún comportamiento extraño en el mecanografiado. Si tienes el código:
const result = []
Por lo general, se trataría como si escribieras:
const result:any[] = []
sin embargo, si tiene noImplicitAnyFALSO Y strictNullChecks VERDADERO en su tsconfig, se trata como:
const result:never[] = []
Este comportamiento desafía toda lógica, en mi humilde opinión. ¿Activar las comprobaciones nulas cambia los tipos de entrada de una matriz? ¿Y luego encenderlo noImplicitAnyrestaura el uso anysin advertencias?
Cuando realmente tienes una serie de any , no debería necesitar indicarlo con un código adicional.
Estaba teniendo el mismo error en la función sin estadísticas ReactJS mientras usaba ReactJs Hook useState . Quería establecer el estado de una matriz de objetos, así que si uso la siguiente manera
const [items , setItems] = useState([]);
y actualice el estado así:
const item = { id : new Date().getTime() , text : 'New Text' };
setItems([ item , ...items ]);
Recibía un error:
argumento de tipo '{id: número; text: any} 'no se puede asignar al parámetro de tipo' never '
pero si lo haces así,
const [items , setItems] = useState([{}]);
El error desapareció pero hay un elemento en el índice 0 que no tiene ningún dato (no quiero eso).
entonces la solución que encontré es:
const [items , setItems] = useState([] as any);
La solución que encontré fue
const [files, setFiles] = useState([] as any);
Elimine "strictlyNullChecks": true de "compilerOptions" o configúrelo como falso en el archivo tsconfig.json de su aplicación Ng. Estos errores desaparecerán como cualquier cosa y su aplicación se compilará correctamente.
Descargo de responsabilidad : esto es solo una solución. Este error aparece solo cuando las comprobaciones nulas no se manejan correctamente, lo que en cualquier caso no es una buena manera de hacer las cosas.
never[]? ¿hay algún uso para eso excepto "una matriz que SIEMPRE estará vacía?"