You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何提取未导出的React Context值类型?有更优雅方案吗?

获取未导出的Context值类型的优雅方案

方案1:使用TypeScript内置的ContextType工具类型

TypeScript 提供了专门用于提取 React Context 值类型的工具类型ContextType,这比通过ComponentProps取Provider的value更直观,属于官方推荐的直接方式:

import type { ContextType } from 'react';
import type { LocationContext } from 'your-library';

type LocationContextObject = ContextType<typeof LocationContext>;

方案2:自定义类型提取工具

如果不想依赖内置工具,也可以自己写一个极简的类型提取器,逻辑直白清晰:

import type { LocationContext } from 'your-library';

type ExtractContextValue<T extends React.Context<any>> = T extends React.Context<infer V> ? V : never;
type LocationContextObject = ExtractContextValue<LocationContext>;

与原写法的对比

你的原写法虽然可行,但属于间接推导——通过Provider组件的属性反向获取值类型。而上面两种方案都是直接从Context类型本身提取值类型,语义更明确,也更符合类型操作的直接性原则。

内容的提问来源于stack exchange,提问作者Gabin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 18:48:24