javascript - Importar archivos typescript basados en la convención de nombres en React Native
Así que tengo tres archivos ts llamados como sigue:
- MyModule.ios.ts
- MiModulo.android.ts
- MyModule.ts (esto está vacío)
Los dos primeros archivos tienen un método llamado: setup() que necesita ejecutarse según la plataforma. Además, el empaquetador Metro hará la resolución, intentará importar .ios al compilar para iOS y .android al compilar para Android..
y tengo otro archivo que importa este método así:
import { setup } from 'MyModule';
el problema es que no estoy seguro si esto resolverá los archivos .android y .ios. ¿Cuál es la manera correcta de hacer este tipo de división de código?
Encuentro esta solución alternativa aquí, pero me preguntaba si hay una manera mejor: https://github.com/Microsoft/TypeScript/issues/8328#issuecomment-219583152
Respuesta #1
Si quieres usar archivos separados para iOS y Android, necesitas llamarlos con las extensiones MyModule.ios.ts y MyModule.android.ts. El archivo vacío MyModule.ts no es necesario.
Luego simplemente impórtalos como si no tuvieran las extensiones específicas de la plataforma. React Native seleccionará automáticamente el archivo correcto según la plataforma en ejecución.
import { setup } from './MyModule'; // Will automatically import either MyModule.ios.ts or MyModule.android.ts
Consulta la documentación sobre esto: https://facebook.github.io/react-native/docs/platform-specific-code.html#platform-specific-extensions
Si no quieres usar archivos separados, puedes usar el módulo Platform. Esto es útil para pequeños fragmentos de código que quieras hacer específicos de la plataforma.
import { Platform } from 'react-native';
if(Platform.OS === 'ios') {
// iOS specific code here
} else if(Platform.OS === 'android') {
// Android specific code here
} else {
// Other platform
}
Ver: https://facebook.github.io/react-native/docs/platform-specific-code#platform-module
