为何Angular HttpClient的responseType设为'text'报错但'json'正常?
这个报错是Angular HttpClient的TypeScript类型重载规则导致的,和'text'本身是否为合法参数无关:
- 当
responseType为默认值'json'时,对应的方法重载支持传入泛型指定JSON解析后的数据类型,因此你写的带<string>泛型的get调用可以正常通过类型校验。 - 当你显式指定
responseType为'text'/'blob'/'arraybuffer'这类非JSON类型时,对应的方法重载没有开放泛型参数,TypeScript会自动根据你传入的responseType推断返回值类型(比如'text'对应返回类型就是Observable<string>),此时你额外添加的<string>泛型无法匹配任何已定义的重载,就会抛出类型不匹配的TS2769错误。
正确写法直接去掉方法后的泛型参数即可,TypeScript会自动完成类型推断:
return this._http.get(url, { responseType: 'text'}).pipe(map(response => body));
内容的提问来源于stack exchange,提问作者jm123456
相关产品推荐
相关产品推荐

