En el siguiente bloque de código se definió el tipo de atributo bolígrafos con la notación <> :
return { ...defaultValues, pens: <[{penStrokeColor: string, penStrokeWidth: number, penOpacity: number}]> [...Array(5).keys() ].map((_)=> { return { penStrokeColor: defaultValues.currentItemStrokeColor, penStrokeWidth: defaultValues.currentItemStrokeWidth, penOpacity: defaultValues.currentItemOpacity }}) }El código anterior funciona, pero mi linter se queja de que esta sugerencia de tipo debe declararse de manera diferente:
Use 'as [{ penStrokeColor: string; penStrokeWidth: number; penOpacity: number }]' instead of '<[{ penStrokeColor: string; penStrokeWidth: number; penOpacity: number }]>' @typescript-eslint/consistent-type-assertions¿Se puede hacer esto en línea también y, de ser así, cómo?
Es tal como dice el error: use as en lugar de la notación de corchetes angulares para afirmar el tipo.
return { ...defaultValues, pens: [...Array(5).keys() ].map((_)=> { return { penStrokeColor: defaultValues.currentItemStrokeColor, penStrokeWidth: defaultValues.currentItemStrokeWidth, penOpacity: defaultValues.currentItemOpacity }}) as [{penStrokeColor: string, penStrokeWidth: number, penOpacity: number}] }Pero no creo que eso sea lo que quiere. ¿Realmente quiere decirle a TS que la matriz creada es una tupla , con un solo elemento? Dado que está creando 5 elementos, probablemente desee un tipo de matriz en su lugar.
Tampoco hay necesidad de afirmación de tipo si ese es el caso: TS puede inferir correctamente que la matriz creada es del tipo deseado.
return { ...defaultValues, pens: [...Array(5).keys() ].map((_)=> { return { penStrokeColor: defaultValues.currentItemStrokeColor, penStrokeWidth: defaultValues.currentItemStrokeWidth, penOpacity: defaultValues.currentItemOpacity }; }) };que infiere el tipo correcto sin ninguna sintaxis de TypeScript.