TypeScript报错:BusinessParameter[]与目标类型无公共属性问题排查
问题根因
报错的核心原因是Pinia store中returnOrderItemBusinessParameters字段的类型断言写法错误:
- 现有写法
[] as BusinessParameter会把该字段的类型标记为单个BusinessParameter对象 - 但该字段设计用来存储
BusinessParameter类型的数组,和API返回的Promise<BusinessParameter[]>类型不匹配 - TypeScript做类型校验时,发现你要赋值的
BusinessParameter[]数组类型,和字段声明的单个对象类型没有可兼容的公共属性,因此抛出你看到的类型错误。
修复方案
修改Pinia store中对应字段的类型断言,将单对象类型改为数组类型即可:
import { defineStore } from 'pinia' import { BusinessParameter } from '@/types/graphql/graphql' export const useReturnOrderStore = defineStore('returnOrder', { state: () => ({ // 修正:将类型断言从 BusinessParameter 改为 BusinessParameter[] returnOrderItemBusinessParameters: [] as BusinessParameter[], }), })
修改完成后,store字段类型和API返回值类型完全对齐,vue-tsc抛出的类型错误会直接消除。
内容的提问来源于stack exchange,提问作者Martin Zeltin
相关产品推荐
相关产品推荐

