Dúvida: Array com tipos variados
Bom dia.
Existe alguma diferença entre tipar um array dentre essas duas formas?
type MyArray1 = (Dog | Cat | Bird)[]
type MyArray2 = Dog[] | Cat[] | Bird[]
O MyArray1
me parece permitir um array mixado entre Dog
, Cat
e Bird
.
Enquanto que o MyArray2
me parece ser um tipo que permite o array de um único tipo desses três.
Confere?
Opa, dazevedo.
Acredito que você consiga tirar suas duvidas aqui: https://stackoverflow.com/questions/61283627/how-to-make-functions-treat-return-value-of-a-b-and-a-b-as-equivalen
Perfeito, Fabrício!
Tentei buscar essa diferenciação no stackoverflow. Mas não consegui achar. Obrigado! Você foi fera!
Agora, outra dúvida.
Como posso realizar um typeGuard para um dos três tipos do `MyArray2`?
```typescript
get arrData(): ClassA[] | ClassB[] {
}
/* Returns the sum of nProperty, existing property in ClassA, but not in ClassB */
get nProperty() {
return this.arrData.reduce((nSum, objCur) => nSum + objCur.nProperty, 0);
}
```
O Código do getter `nProperty` resulta erro, pois a propriedade `nProperty` só existe em `ClassA`.
> O Código do getter nProperty resulta erro, pois a propriedade nProperty só existe em ClassA.
Você poderia estender, não?
> Como posso realizar um typeGuard para um dos três tipos do MyArray2?
Melhor do que eu explicar por cima. Ta aqui um guia de como usar TypeGuards no ts!
https://blog.logrocket.com/how-to-use-type-guards-typescript/