TypeScript提示WaitReturn[]类型不存在waitFor属性如何修复?
错误原因
你的猜测完全正确,错误核心是函数返回值类型声明和实际返回值不匹配:
- 你在函数定义处标注的返回类型是
WaitReturn[](WaitReturn类型的数组) - 但函数实际
return的是单个WaitReturn类型的对象,TS 检测到类型不匹配就抛出了错误。
修复方案
根据你的业务实际需求,二选一即可:
方案1:修改返回值类型,声明为返回单个对象
如果业务逻辑就是需要返回单个校验配置对象,把函数的返回类型标注从 WaitReturn[] 改成 WaitReturn 即可:
import { Validation } from '../../contracts/validation.types'; type WaitParams = { element: string; exists: boolean; timeoutInMilliseconds: number; }; type WaitReturn = { waitFor: string; validation: Validation; timeoutInMilliseconds: number; }; // 仅修改这一行的返回类型 module.exports = function wait({ element, exists = true, timeoutInMilliseconds = 30000 }: WaitParams): WaitReturn { if (!element) { throw new Error('Missing required attribute element'); } return { waitFor: 'validation', validation: { target: { locators: [ { type: 'css', value: element, }, ], }, type: 'element_match', failIfFound: !exists, match: '', }, timeoutInMilliseconds, }; };
方案2:修改返回值,包裹为数组
如果业务逻辑确实要求返回数组,把你现在返回的对象放到数组中即可:
import { Validation } from '../../contracts/validation.types'; type WaitParams = { element: string; exists: boolean; timeoutInMilliseconds: number; }; type WaitReturn = { waitFor: string; validation: Validation; timeoutInMilliseconds: number; }; module.exports = function wait({ element, exists = true, timeoutInMilliseconds = 30000 }: WaitParams): WaitReturn[] { if (!element) { throw new Error('Missing required attribute element'); } // 将返回对象用方括号包裹为数组结构 return [{ waitFor: 'validation', validation: { target: { locators: [ { type: 'css', value: element, }, ], }, type: 'element_match', failIfFound: !exists, match: '', }, timeoutInMilliseconds, }]; };
内容的提问来源于stack exchange,提问作者HelloL
相关产品推荐
相关产品推荐

