Estoy usando Typescript en mi aplicación React Native y defino la siguiente matriz:
const arr: string[] = Platform.select({ ios: ["a", "b", "c"], android: ["a", "b", "c"] }) VsCode subraya arr y me dice Type 'string[] | undefined' is not assignable to type 'string[]' , así que lo cambié a
const arr: string[] | undefined = Platform.select({ ios: ["a", "b", "c"], android: ["a", "b", "c"] }) VsCode elimina el subrayado en arr en la definición, pero cuando lo uso en mi código, lo subraya allí y dice Argument of type 'string[] | undefined' is not assignable to parameter of type 'string[]'
Creo que el problema es que Platform.select() podría devolver undefined , pero luego estoy usando arr en mi código para operaciones que requieren que tenga el tipo string[] en lugar de string[] . ¿Cómo puedo modificar mi código para eliminar todas estas advertencias?
Puede proporcionar una matriz vacía como valor predeterminado cuando Platform.select devuelve undefined mediante el operador de fusión nulo.
Esto también funcionaría
const arr: string[] = Platform.select({ ios: ["a", "b", "c"], android: ["a", "b", "c"] }) ?? []Esto puede ser suficiente:
const arr: string[] = Platform.select({ ios: ["a", "b", "c"], android: ["a", "b", "c"] }) as unknown as string[]Pero, yo sería cauteloso. Por lo general, es mejor escuchar Typescript y ajustar su diseño en consecuencia.