javascript - 用于 React-Native 应用程序的平台特定 ios/android typescript 文件的相对导入

标签 javascript android ios typescript react-native

我有一个组件有两种基于 React-Native 平台的不同设计:MyComponent.ios.tsxMyComponent.android.tsx

虽然当我将我的组件导入 MyView.tsx 时,它会报错。

MyView.tsx(5,38): error TS2307: Cannot find module './MyComponent'.

我已尝试将我的 tsconfig 文件路径修改为以下内容:

"paths": {
  "*": ["*", "*.ios", "*.android"]
},

虽然我仍然有同样的问题。

你们知道如何解决这个问题吗?

谢谢

最佳答案

基本上这种方法不会因为一个原因而起作用,一旦你的 ts 文件被转译,相对路径就不再存在,编译器添加“.ios”或“.android”并停止提示,所以输出将阅读纯 JS 时,不能在 native 端工作。

我通过在同一个文件夹中创建一个类型 (MyComponent.d.ts) 文件来让它工作,例如:

// This file exists for two purposes:
// 1. Ensure that both ios and android files present identical types to importers.
// 2. Allow consumers to import the module as if typescript understood react-native suffixes.
import DefaultIos from './MyComponent.ios';
import * as ios from './MyComponent.ios';
import DefaultAndroid from './MyComponent.android';
import * as android from './MyComponent.android';

declare var _test: typeof ios;
declare var _test: typeof android;

declare var _testDefault: typeof DefaultIos;
declare var _testDefault: typeof DefaultAndroid;

export * from './MyComponent.ios';

关于javascript - 用于 React-Native 应用程序的平台特定 ios/android typescript 文件的相对导入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44851502/

相关文章:

android - react native 如何在部分列表的一侧添加字母顺序

ios - 在 swift 项目中使用自定义日历

ios - iOS 应用的推荐控件或页面流

javascript - 使用 EventListener 调用函数

java - Android Studio gradle list 合并失败

javascript - 使用 POST 从 javascript 发送的数据插入到使用 php 的 mysql 数据库中

android - 带有图标或图像的 ImageButton 中未显示文本

iOS 应用因 Facebook SDK 中的 IDFA 而被拒绝

javascript - 如何在 JS (ES6) 中获取带点格式字符串的嵌套对象

javascript - 清除设置超时 Javascript