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

如何获取函数返回对象中x键的类型?不依赖内部接口适配Pinia

解决方案

要实现这个需求,核心是利用TypeScript的内置工具类型提取函数返回值的指定属性类型,同时把需要全局复用的类型抽离到函数外部,具体步骤如下:

1. 抽离全局可复用的类型

既然你需要把SelectedItems作为全局类型在Pinia Store中使用,首先要把这个接口从getItem函数内部移到全局作用域:

// 全局定义接口,Pinia可以直接导入引用
interface SelectedItems {
  x: animals | null;
  y: fruits;
}

function getItem(value: string) {
  return store.getters['stuff/product'](value) as SelectedItems;
}

2. 提取返回值中x的类型

使用TypeScript的ReturnType工具类型获取getItem的返回类型,再通过索引访问提取x的类型,有两种使用方式:

方式一:直接在函数参数中使用

function setMapping(animals: ReturnType<typeof getItem>['x']) {
  // 这里的animals类型就是SelectedItems['x'],也就是animals | null
}

方式二:定义全局类型别名复用

如果需要在多个地方(比如Pinia Store)复用这个类型,可以先定义一个类型别名:

// 全局类型别名,Pinia或其他模块都能导入使用
type SelectedItemX = ReturnType<typeof getItem>['x'];

function setMapping(animals: SelectedItemX) {
  // ...
}

额外说明

就算暂时不想把SelectedItems移到函数外部,也可以直接通过ReturnType<typeof getItem>['x']提取x的类型——TypeScript会自动解析函数的返回类型,不需要显式引用内部的接口。但从你的需求来看,把接口抽离到全局是更合理的选择,既能满足Pinia的全局类型需求,也让代码结构更清晰。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 11:33:28