Angular调用.NET Web API时遇'(response:Movie[])=>void'类型不匹配错误求助
问题解决:Angular调用.NET Web API时的类型不兼容错误
错误原因
Angular的HttpClient.get()方法默认返回Object类型,你的MovieserviceeService.GetAll()方法没有明确指定返回的泛型类型,导致订阅时你将响应声明为Movie[],但TypeScript识别到返回类型是Object,两者类型不兼容,从而抛出类型错误。
修复步骤
1. 为HttpClient请求指定泛型类型
修改movieservice.ts中的GetAll方法,明确指定返回类型为Movie[],同时建议其他接口方法也指定对应泛型,提升类型安全性:
// movieservice.ts GetAll() { return this.httpClient.get<Movie[]>(this.url + "Movies"); } GetSingle(id: number) { return this.httpClient.get<Movie>(this.url + "Movies/" + id); }
2. 修正Movie类的字段类型错误
你的Movie类中Title字段被错误定义为number类型,电影标题应为字符串类型,修改movie.ts:
// movie.ts export class Movie{ ID: number; Title: string; // 从number改为string GenreId: number; Duration: number; RatingScore: number; PublishDate: Date; }
3. 清理组件中的无效代码
AppmovieComponent的ngOnInit方法中抛出了未实现的错误,建议替换为调用GetAll方法,初始化加载数据:
// appmovie.component.ts ngOnInit(): void { this.GetAll(); }
完成以上修改后,TypeScript的类型校验会通过,API调用的响应能正确映射到Movie[]类型。
内容的提问来源于stack exchange,提问作者Duhan Uzun
相关产品推荐
相关产品推荐

