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

父属性为可选类型时无法提取子类型的TypeScript问题求助

父属性为可选类型时无法提取子类型的TypeScript问题求助

嘿,我完全懂你遇到的困扰!问题出在自动生成的QueryParameters类型里,query是可选属性(带有?标记),这就导致QueryParameters["query"]的实际类型是{ show: "ALL" | "ACTIVE" | "DRAFT" } | undefined——换句话说,Query可能是undefined,你自然没法直接访问一个可能不存在的对象的show属性,所以TypeScript抛出了TS2339错误。

这里有几个简单的解决办法,帮你顺利提取到ShowOptions类型:

方法一:用NonNullable排除undefined类型

先把Query类型里的undefined可能性去掉,再提取show的类型:

// 自动生成的代码(无法修改)
type QueryParameters = {
  query?: {
    show: "ALL" | "ACTIVE" | "DRAFT";
  };
};

// 修正后的类型提取
type Query = NonNullable<QueryParameters["query"]>;
type ShowOptions = Query["show"]; // 正确得到 "ALL" | "ACTIVE" | "DRAFT"

方法二:直接嵌套提取(更简洁)

如果你不想单独定义Query类型,可以一步到位:

type ShowOptions = NonNullable<QueryParameters["query"]>["show"];

这样就能精准获取到你想要的"ALL" | "ACTIVE" | "DRAFT"类型啦,完全不需要修改自动生成的代码~

备注:内容来源于stack exchange,提问作者Adam

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.20 11:54:34