如何为getAll()函数的Observable替换any为正确类型?
解决方法
你可以直接把Observable<any>中的any替换为你在http.get里已经定义的匿名类型,或者提前定义一个命名接口让代码更易维护。
方式1:直接使用匿名类型
直接将返回值类型改为Observable<{ results: CharacterData[]; info: CharacterInfo; }>,和http.get指定的类型保持一致:
getAll(): Observable<{ results: CharacterData[]; info: CharacterInfo; }> { return this.http .get<{ results: CharacterData[]; info: CharacterInfo; }>(characterUrl) .pipe(map((el) => el)); }
方式2:定义命名接口(推荐)
先定义一个专门的接口描述返回结构,后续复用或修改都更方便:
// 提前定义接口 interface CharacterResponse { results: CharacterData[]; info: CharacterInfo; } // 函数中使用该接口作为返回类型 getAll(): Observable<CharacterResponse> { return this.http .get<CharacterResponse>(characterUrl) .pipe(map((el) => el)); }
你的http.get已经明确指定了返回数据的结构,pipe(map(el => el))只是原样返回该数据,所以函数返回类型要和这个结构一致,这样TypeScript就能提供完整的类型检查和智能提示。
内容的提问来源于stack exchange,提问作者Nick AL
相关产品推荐
相关产品推荐

