Tenho um serviço DataHandler que chama um serviço de banco de dados e retorna o valor para o componente que faz a chamada. O serviço de banco de dados retorna um observável de um array, enquanto eu gostaria que o manipulador de dados retornasse um sinal do mesmo array pronto para uso pelo componente. Portanto, estou tentando usar a função toSignal do Angular, mas quando defino um array vazio como valor inicial, recebo o seguinte erro:
Type 'never[]' is not assignable to type 'undefined'.
Pelo que entendi, o TypeScript não consegue encontrar o tipo do array vazio, então ele tenta definir o tipo do array para o tipo mencionado never[]
. No entanto, estou definindo o tipo duas vezes. Na chamada de função do Manipulador de Dados, o tipo de retorno é definido como:
public readOverview(type: DataType): Observable<DataEntry[]> { ... }
Portanto, o Observable retornado tem o tipo DataEntry[]. O tipo também é definido especificamente na chamada de função toSignal que estou fazendo no manipulador de dados:
return toSignal<DataEntry[]>(this._dbFacade.readOverview(type), { initialValue: [] });
Na minha opinião, o TypeScript definitivamente deveria ser capaz de encontrar o tipo DataEntry[] para o array inicial vazio. No entanto, não consegue. Então, o que preciso fazer para que ele encontre o tipo correto e consiga usar um array vazio como valor inicial?
Você tem duas opções:
toSignal
(como Andrei já mencionou):toSignal(this._dbFacade.readOverview(type), { initialValue: [] });
então ele escolhe a sobrecarga de função correta :