如何在带有 Typescript 项目的 React Native 中使用 AWS Amplify?

Posted

技术标签:

【中文标题】如何在带有 Typescript 项目的 React Native 中使用 AWS Amplify?【英文标题】:How to use AWS Amplify in React Native with Typescript Project? 【发布时间】:2020-10-12 04:26:57 【问题描述】:

我正在尝试在使用 typescript 的 react native 项目中添加 Amplify Authentication。 放大文档 'aws-amplify-react-native' 中给出了一个包,它用作验证我们应用程序的中间件。 但是这个包只在基于 javascript 的项目中被支持。 对于 Typescript,它会显示类似的错误

Could not find a declaration file for module 'aws-amplify-react-native'.
Try `npm install @types/aws-amplify-react-native` if it exists or add a new declaration (.d.ts) file containing `declare module 'aws-amplify-react-native';`

没有像'@types/aws-amplify-react-native'这样的包可用

那么任何人都可以帮助我解决这个问题?

【问题讨论】:

安装 aws-amplify 和 aws-amplify-react-native。 【参考方案1】:

我在我的打字稿项目中安装了这个,我没有问题:

 npm install aws-amplify aws-amplify-react-native @react-native-community/netinfo @react-native-async-storage/async-storage

https://docs.amplify.aws/start/getting-started/setup/q/integration/react-native/#initialize-a-new-backend

【讨论】:

【参考方案2】:

不幸的是,在此答案时没有定义类型。但是,您可以像这样调用@ts-ignore

// @ts-ignore
import Amplify,  Auth  from 'aws-amplify';
// @ts-ignore
import awsconfig from './aws-exports';
// @ts-ignore
import  withAuthenticator  from 'aws-amplify-react-native'

Amplify.configure(awsconfig);

【讨论】:

先生,我遇到了类似的问题,应该在哪里添加这个添加【参考方案3】:

目前没有可用于 aws-amplify-react-native 的官方 TypeScript (TS) 类型。要抑制 TypeScript 警告,您需要定义自己的 TS 声明文件 (*.d.ts)。

要获得大致的类型,您可以将this file 复制到您的项目中。这些是 GitHub 用户 dantasfiles 编写的类型。请记住,它们并不精确,可以更精确地指定。

【讨论】:

先生,我在这里遇到同样的问题,你能帮我吗?我已经导入了火,但仍然不知道如何配置它 @GeorgeSMulbahII 在您的项目中拥有 TS 声明文件 (.d.ts) 后,您只需确保它包含在您的 tsconfig.json 中,使用 include 而不是 excluded。然后 TS 编译器可以将这些类型耦合到基于 declare module 'aws-amplify-react-native' 的放大包。 有关更多信息,请参阅例如这个问题:***.com/questions/21247278/about-d-ts-in-typescript.

以上是关于如何在带有 Typescript 项目的 React Native 中使用 AWS Amplify?的主要内容,如果未能解决你的问题,请参考以下文章

React大型项目状态管理库如何选型?

如何在带有 typescript 项目的 react js 中使用 .env 文件?

如何在带有 Typescript 的视图中使用 Vue 单文件组件?

如何正确使用带有 typescript 的 createAsyncThunk 函数?

当父组件在其子组件中注入道具时,如何在 Typescript 中定义道具?

如何像在 babelrc 中创建依赖别名一样在 typescript 中创建类型别名?