Respostas:
Tudo o que você precisa fazer é definir o seu resultcomo uma matriz de strings, como o seguinte:
const result : string[] = [];
Sem definir o tipo de matriz, por padrão será never. Portanto, quando você tentou adicionar uma string, houve uma incompatibilidade de tipo e, portanto, gerou o erro que você viu.
nevers seja útil. Mas, enquanto olhava para ele, me deparei com essa resposta, que tem ótimas informações.
let x;), ela é do tipo anypor padrão. Não never.
any[]. Fiquei surpreso que foi o never[]que o torna inútil. Não intuitivo. Obrigado pela resposta. edit: gramática
Outra maneira é:
const result = [] as any;
anynão é uma boa opção, porque basicamente desativa todos os recursos do TypeScript. É uma solução alternativa e pode levar a vários erros.
Parece ser uma regressão recente ou algum comportamento estranho no texto datilografado. Se você tem o código:
const result = []
Geralmente seria tratado como se você escrevesse:
const result:any[] = []
no entanto, se você tiver ambos noImplicitAnyFALSE e strictNullChecks TRUE no seu tsconfig, ele será tratado como:
const result:never[] = []
Esse comportamento desafia toda a lógica, IMHO. Ativar verificações nulas altera os tipos de entrada de uma matriz? E, em seguida, ligar noImplicitAnyrealmente restaura o uso de anysem avisos?
Quando você realmente tem uma matriz de any, você não precisa indicá-la com código extra.
Eu estava tendo o mesmo erro Na função sem estado do ReactJS enquanto usava o ReactJs Hook useState . Eu queria definir o estado de uma matriz de objetos, portanto, se eu usar da seguinte maneira
const [items , setItems] = useState([]);
e atualize o estado assim:
const item = { id : new Date().getTime() , text : 'New Text' };
setItems([ item , ...items ]);
Eu estava recebendo erro:
Argumento do tipo '{id: number; text: any} 'não é atribuível ao parâmetro do tipo' never '
mas se fizer assim,
const [items , setItems] = useState([{}]);
O erro desapareceu, mas há um item no índice 0 que não possui nenhum dado (não o deseja).
então a solução que encontrei é:
const [items , setItems] = useState([] as any);
A solução que encontrei foi
const [files, setFiles] = useState([] as any);
Remova "strictNullChecks": true de "compilerOptions" ou defina-o como false no arquivo tsconfig.json do seu aplicativo Ng. Esses erros desaparecerão como qualquer coisa e seu aplicativo será compilado com êxito.
Isenção de responsabilidade : esta é apenas uma solução alternativa. Este erro aparece apenas quando as verificações nulas não são tratadas corretamente, o que, de qualquer forma, não é uma boa maneira de fazer as coisas.
never[]? existe alguma utilidade para isso, exceto "uma matriz que SEMPRE estará vazia?"