如何获取函数返回对象中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
相关产品推荐
相关产品推荐

