打字稿:智能感知无法识别使用 http.post 的方法返回的正确类型
Typescript: intellisense does not recognize the right type returned by a method using http.post
我有如下一段代码
getLoggingCsvRecords(recId: string) {
const url = this.apiurl + 'loggingcsvrecordsforrecid';
return this.http.post<Array<string>>(url, {recId})
.map(data => data['results']);
}
我希望智能感知能够识别 getLoggingCsvRecords()
方法返回的类型是 Obsevable<Array<string>>
。
相反,智能感知建议 Observable<any>
作为正确的类型。
我哪里错了?
我正在使用 VSCode 作为 IDE。
你的 return 签名放错地方了。
GetLoggingRecords(recId: string): Observable<Array<string>> {
Your code
return this.http.post(rest of stuff)
}
根据您编写的 HTTP Post returns 字符串数组。但是,您似乎将其映射为对象。
也许你的意思是这样的?
interface ILoggingRecord {
results: string;
}
// ...
getLoggingCsvRecords(recId: string) {
const url = this.apiurl + 'loggingcsvrecordsforrecid';
return this.http.post<Array<ILoggingRecord>>(url, {recId})
.map(data => data['results']);
}
调用应该可以理解为数据是一个对象数组。因此,映射的结果是一个字符串。如果这不起作用,请尝试 data => data.results
。对属性的字符串访问可能会混淆语法分析器。
我有如下一段代码
getLoggingCsvRecords(recId: string) {
const url = this.apiurl + 'loggingcsvrecordsforrecid';
return this.http.post<Array<string>>(url, {recId})
.map(data => data['results']);
}
我希望智能感知能够识别 getLoggingCsvRecords()
方法返回的类型是 Obsevable<Array<string>>
。
相反,智能感知建议 Observable<any>
作为正确的类型。
我哪里错了?
我正在使用 VSCode 作为 IDE。
你的 return 签名放错地方了。
GetLoggingRecords(recId: string): Observable<Array<string>> {
Your code
return this.http.post(rest of stuff)
}
根据您编写的 HTTP Post returns 字符串数组。但是,您似乎将其映射为对象。
也许你的意思是这样的?
interface ILoggingRecord {
results: string;
}
// ...
getLoggingCsvRecords(recId: string) {
const url = this.apiurl + 'loggingcsvrecordsforrecid';
return this.http.post<Array<ILoggingRecord>>(url, {recId})
.map(data => data['results']);
}
调用应该可以理解为数据是一个对象数组。因此,映射的结果是一个字符串。如果这不起作用,请尝试 data => data.results
。对属性的字符串访问可能会混淆语法分析器。