我正在使用此程序包react-native-parallax-scroll-view
,它没有像@types/...
这样的预设类型程序包,由于某种原因,我在声明此程序包时不得不修改此程序包并现在制作自己的副本在.d.ts
文件中,如下所示:
declare module "../modified_modules/react-native-parallax-scroll-view";
它没有被声明为ts的模块,我该如何解决呢?
答案 0 :(得分:1)
首先请确保您的declare module
语句不在另一个模块内(即,在包含的.d.ts
文件中不应进行顶级导入或导出),因此应将其视为模块声明而不是而不是模块增强。
TypeScript不支持带有相对路径的模块声明。参见this issue。您应该得到一个错误,“环境模块声明不能指定相对模块名称。”如果要使用相对路径在代码中导入模块,提供类型声明的唯一方法是将.d.ts
文件和相应的顶层导出文件放在.js
文件旁边(或者实际上是根据您的rootDirs
选项)。据我所知,使用这种方法无法将模块声明为未类型化(等同于declare module "../modified_modules/react-native-parallax-scroll-view";
,但没有正文)。因此,您需要进行一些设置,以便可以使用非相对路径导入模块,并将相同的非相对路径放入declare module
语句中,然后声明应该起作用。
在您的情况下,建议通过将package.json
的版本设置为包含修改后模块的目录的相对路径,来在主项目的react-native-parallax-scroll-view
中注册修改后的模块。然后npm install
将从node_modules/react-native-parallax-scroll-view
到修改后的模块建立符号链接。由于修改后的模块随后可通过标准位置进行访问,因此该设置有望给您带来最少的麻烦。您可以像使用原始模块一样使用import ... from "react-native-parallax-scroll-view"
和declare module "react-native-parallax-scroll-view";
。
答案 1 :(得分:0)
它没有被声明为ts的模块,我该如何解决呢?
代替
declare module "../modified_modules/react-native-parallax-scroll-view";
declare module "react-native-parallax-scroll-view";