- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
以下源代码返回 TypeScript 错误:
this.hapi.ext({
type: 'onPreResponse',
method: async (request, handler) => {
if (request.response.isBoom && request.response.message !== 'Invalid request payload input') {
if (request.response.isServer) {
logger.captureException(request.response, null, {
digest: this.requestDigest(request)
});
} else {
logger.captureMessage(request.response.message, 'info', null, {
digest: this.requestDigest(request)
});
}
}
return handler.continue;
}
});
Property 'isBoom' does not exist on type 'Boom | ResponseObject'. Property 'isBoom' does not exist on type 'ResponseObject'.
Property 'isServer' does not exist on type 'Boom | ResponseObject'. Property 'isServer' does not exist on type 'ResponseObject'.
Argument of type 'string | ((httpMessage: string) => ResponseObject)' is not assignable to parameter of type 'string'. Type '(httpMessage: string) => ResponseObject' is not assignable to type 'string'.
我该如何修复它们? @types/hapi
有问题吗?
最佳答案
因为 response
是一个联合 ResponseObject |繁荣 | null
除非使用类型保护,否则我们只能访问联合的普通成员。
有几种类型的类型保护,你可以阅读更多关于 here 的内容。 .下面我使用一个in
类型的守卫来根据属性的存在来区分
import { Server } from 'hapi';
const hapi = new Server({})
hapi.ext({
type: 'onPreResponse',
method: async (request, handler) => {
if (request.response && 'isBoom' in request.response && request.response.message !== 'Invalid request payload input') {
if (request.response.isServer) {
request.response.message // string
}
return handler.continue;
}
}
});
因为 Boom
类型是一个类,instanceof
类型保护也应该起作用:
hapi.ext({
type: 'onPreResponse',
method: async (request, handler) => {
if (request.response && request.response instanceof Boom && request.response.message !== 'Invalid request payload input') {
if (request.response.isServer) {
request.response.message // string
}
return handler.continue;
}
}
});
注意 在这两种情况下,我都添加了对 request.response
的检查以从联合中排除 null
。仅当启用 strictNullChecks
时编译器才需要这样做,但无论如何这可能是个好主意。
关于node.js - 如何修复 TypeScript 错误属性 'isBoom' 在类型 'Boom<any> | ResponseObject' 上不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54184444/
我想创建 Alamofire POST 请求但我得到失败响应,我不知道映射对象或请求中的错误 func loginUser() { let URL = ..... + "/Log
我正在使用 AFNetworking 调用 Web 服务并将返回数据保存在 NSDictionary 对象中。但是其中没有存储任何内容,即使在 NSLog() 中成功记录数据也是如此。 这是我的字典:
我对 AlamofireObjectMapper 有疑问responseObject方法。这是completionHandler从 Response -> Void 更改为(旧)到DataRespon
我使用 AlamofireObjectMapper 扩展。我想得到回应,但失败了。我的 tableLeague 对象始终为零,因为具有响应闭包的代码不会调用 ({ (response: DataRes
我在 GET 请求期间处理 AFHTTPRequestOperation 中的空 responseObject 时遇到问题。我正在使用 AFNetworking 库。 如果 responsteObje
我正在使用 AFNetworking 获取 JSON 对象: -(void)getData{ NSArray *pathComponents = [NSArray arrayWithObjec
我正在尝试检测与网站的 SSL 握手何时失败。现在,我有一个如下所示的响应对象: let r = request({url:"url", method: "HEAD", ...}, (res) =>
我在使用 Fuel 的 responseObject 时遇到问题以一般的方式。我正在尝试开发一种集中式方法,其中组件的 HTTP 响应对象已经反序列化,准备就绪。它看起来像这样: class Cont
我正在尝试使用 PHP(在服务器端)将图像发送到我的 iOS 应用程序,以便我可以在 UIImageView 中显示它。 我的服务器端代码是: 我在我的 iOS 应用程序中收到带有此代码的图像: N
我对 AFNetworking 1.0 进行了调用,它返回一个 responseObject,其中包含我想要的 API 中的数据: [[AFDiffbotClient sharedClient] po
Alamofire.request(URL, method: Endpoints.login.method, parameters: parameters, encoding: JSONEncodin
使用 Xcode 7.1使用来自 Github 的 AlamofireObjectMapper 框架.我无法使用 responseObject 处理程序。 代码如下: let url = "https
我已阅读 this question并尝试在 Swift 中从 AFNetworking 的 responseObject 解析 JSON,但结果始终为 nil。 这是我的代码的摘录: let man
我尝试了多个选项将 responseSerializer 设置为 JSON 但我无法将 responseObject 转换为 NSDictionary。问题是我得到的响应是 NSData NS
下面的代码是通过一个operationQueue提交图片。请求都被一个一个正确触发,服务器响应包含客户端需要获取的图像文件名。问题是成功/失败 block 的 reponseObject 不是预期的已
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; [manager GET:@"htt
我已经耗费了几个可怕的时间来找出如何将 Get 请求 AFNetworking 中的 responseObject 保存到 nsarray。无法弄清楚如何保存它以便我可以在我的代码的另一部分中使用它。
如何从 AFNetworking 3.x 中的失败 block 获取响应字符串, 在 2.x 版本中,这样做的方式是: [manager GET:path parameters:parameters
我在 swift 中使用 AlamofireObjectMapper 框架,如 https://github.com/tristanhimmelman/AlamofireObjectMapper 中所
以下源代码返回 TypeScript 错误: this.hapi.ext({ type: 'onPreResponse', method: async (request, handler) =
我是一名优秀的程序员,十分优秀!