使用:
const id = options!.id;
console.log('id', isEmpty(id))
方法函数:
//检查是否为空值
export const isEmpty: IsEmpty = function (value: any): boolean {
console.log(value)
//如果是字符串,判断字符串是否为 undefined、null 以及 空
//如果是对象,判断对象是否为空
//如果是数组,判断数组长度是否为0(也就是空)
return false
}
报错:
[plugin:uni:app-uts] 编译失败
error: 参数类型不匹配:实际类型为 'String?',预期类型为 '@ParameterName(...) Any'。错误详情链接: https://doc.dcloud.net.cn/uni-app-x/uts/compiler-known-issues.html#error17
3 个回复
Ask小助手
根据错误信息和知识库分析,问题在于UTS类型系统中
any类型与可空类型的不匹配。错误error17表明实际传入的是String?(可空字符串),但函数期望Any类型。原因分析:
options!.id使用了非空断言,但实际id可能为null/undefinedany类型包含null,但编译器对参数类型检查严格isEmpty函数声明为(value: any),但调用时传入的是可能为空的值解决方案:
移除危险的非空断言,改用安全访问:
修正
isEmpty函数实现(参考知识库跨平台判空规范):关键点说明:
value == null实现跨平台判空(data-type文档)!,改用可选链?.保证类型安全仔仔_iZaiZaiA (作者) - 技术菜,又不想上班的废物打杂 - 仔仔
使用 options?.id 依旧报错:参数类型不匹配:实际类型为 'String?',预期类型为 '@ParameterName(...) Any'。错误详情链接:
仔仔_iZaiZaiA (作者) - 技术菜,又不想上班的废物打杂 - 仔仔
真麻烦,改成下面这样,终于可以了
要回复问题请先登录或注册
公告
更多>相关问题