Angular11升级Angular14遇TS错误:类型never不存在find()属性
问题原因
你遇到的问题核心在于TypeScript的类型推断规则:
- 仅给
users赋值null却未显式声明类型时,TypeScript会将其类型推断为null,而非用户数组 | null的联合类型。 - 当你通过
if (this.users == null)排除null分支后,TypeScript找不到该变量的其他可能类型,就会将其判定为never类型——never类型没有任何属性方法,自然会报错find不存在。
解决方法
显式声明联合类型(推荐)
给users明确标注类型,告知TypeScript它的可能取值:// 先确保你已定义User类型(比如interface User { id: string; ... }) users: User[] | null = null;这样TypeScript就能正确识别非null分支中
users是数组类型,支持find方法调用。初始化改为空数组
如果业务允许users初始状态为空数组而非null,可直接修改:users: User[] = [];同时还能简化后续的null判断逻辑。
临时使用类型断言(不推荐)
若需快速临时解决,可手动断言类型跳过检查,但这会规避TypeScript的类型校验,存在风险:const user = (this.users as User[]).find(x => x.id === id);
内容的提问来源于stack exchange,提问作者Markus
相关产品推荐
相关产品推荐

