React Native中如何查找类型?Animated类型定义关联问题排查
React Native Animated模块类型机制相关疑问
开发实际场景
- 组件内引入React Native核心模块的常规代码:
import { Animated, Easing } from 'react-native';
- 查找Animated模块的Flow类型定义时,参考社区方案使用的类型导入写法:
import type AnimatedValue from 'react-native/Libraries/Animated/src/nodes/AnimatedValue';
- 当前使用的React Native版本为0.63.2
具体疑问
1. VSCode类型跳转路径异常
在VSCode中对上述常规导入语句里的Animated执行「跳转到类型定义」操作时,跳转结果没有指向项目node_modules下的React Native模块源码,而是定位到系统Library/Caches路径下的TS类型自动生成缓存文件index.d.ts;且在node_modules的React Native目录中检索不到该目标文件,无法明确该现象的产生原因。
2. 类型定义的跳转断层问题
从跳转得到的index.d.ts文件中,可看到Animated的相关定义片段:
export namespace Animated { type AnimatedValue = Value; type AnimatedValueXY = ValueXY; export class Value extends AnimatedWithChildren {
从这段定义可知,Animated.Value是类结构,对应类型为AnimatedValue,但在编辑器内对该Value类执行跳转操作时,无法定位到对应的实体定义路径。
3. Flow类型路径与TS类型定义的关联逻辑
核心疑惑为:之前用于导入Flow类型的路径react-native/Libraries/Animated/src/nodes/AnimatedValue,与缓存index.d.ts中定义的type AnimatedValue = Value; 不存在直接的文件引用关系的前提下,二者是如何建立对应关联的。
内容的提问来源于stack exchange,提问作者Franky1790
相关产品推荐
相关产品推荐

