根据React Native中的命名约定导入打字稿文件

时间:2019-06-17 15:52:58

标签: javascript typescript react-native naming-conventions code-splitting

所以我有三个ts文件,如下所示:

  • MyModule.ios.ts
  • MyModule.android.ts
  • MyModule.ts(这是空的)

前两个文件有一个名为setup()的方法,该方法需要基于平台运行。Metro bundler也会解决该问题,它会在为ios构建时尝试导入.ios,为android构建时尝试导入.android。

,我还有另一个文件,该文件的导入方法如下:

import { setup } from 'MyModule';

问题是,我不确定这是否可以解决.android和.ios文件。进行这种代码拆分的正确方法是什么?

我在这里找到了解决方法,但是我想知道是否还有更好的方法:https://github.com/Microsoft/TypeScript/issues/8328#issuecomment-219583152

1 个答案:

答案 0 :(得分:2)

如果要为iOS和Android使用单独的文件,则需要将其称为MyModule.ios.tsMyModule.android.ts扩展名。不需要空的MyModule.ts文件。

然后将它们导入,就好像它们没有特定于平台的扩展一样。 React Native将根据运行的平台自动选择合适的文件。

import { setup } from './MyModule'; // Will automatically import either MyModule.ios.ts or MyModule.android.ts

请参阅以下文档:https://facebook.github.io/react-native/docs/platform-specific-code.html#platform-specific-extensions


如果您不想使用单独的文件,则可以使用Platform模块。这对于您希望使平台特定的小代码段很好。

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
}

请参阅:https://facebook.github.io/react-native/docs/platform-specific-code#platform-module