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

Import typescript files based on naming convention in React Native

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

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

我还有另一个文件,它像这样导入此方法:

import { setup } from 'MyModule';

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

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

如果要为 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