带有--strictNullCheck的打字稿-在单独的方法中检查不为空
Typescript with --strictNullCheck - check not null in separate method
我正在使用编译器 --strictNullCheck 选项
我有这个方法:
我需要检查headers是否不为空,然后才能使用它们。太棒了
现在我想将检查操作移动到 单独的 方法,如下所示:
但不是我收到此错误:
所以没有办法在单独的方法中检查一些 object 或者它的一些 属性 是否不为空?
应该很简单:
if(err.headers != null) {
return error.headers.get('content-type') || defaultContentType;
} else {
return defaultContentType; // or whatever
}
您也可以将其放入 hasHeaders
代码中,但是,typescript 编译器可能仍会或可能不会抛出该警告。
有关检查空值的更多详细信息:
通过 'truthy' 值
检查值
您可以只检查该值是否为 "truthy",即它不是 null
、undefined
、0
、false
或 ''
通过将值用作布尔值,即 if (value) { /* do something */ }
或 return value || defaultValue
或 return value ? value : defaultValue
,等等
通过这种方式你可以做这样的事情:
return error.headers ?
(error.headers.get('content-type') || defaultContentType) :
defaultContentType /* or whatever */;
不过如果你的变量名很长的话会有点乱。
使用识别与相等性检查
有些人更喜欢使用===
(和!==
)(等式)而不是==
(和!=
)(等式),因为===
是更严格的检查;但是,null == undefined
等于 true,而 null === undefined
等于 false,所以在正确的地方使用正确的!
使用类型保护。类型保护是一些表达式,它执行运行时检查以保证某些范围内的类型。
在你的情况下,这样的事情可能会起作用(很难判断,因为你粘贴的是图像而不是代码):
function hasHeaders(error: Response): error is Response & { headers: Headers} {
return error.headers != null
}
您可以在 https://www.typescriptlang.org/docs/handbook/advanced-types.html
的打字手册中了解有关类型保护的更多信息
我正在使用编译器 --strictNullCheck 选项
我有这个方法:
我需要检查headers是否不为空,然后才能使用它们。太棒了
现在我想将检查操作移动到 单独的 方法,如下所示:
但不是我收到此错误:
所以没有办法在单独的方法中检查一些 object 或者它的一些 属性 是否不为空?
应该很简单:
if(err.headers != null) {
return error.headers.get('content-type') || defaultContentType;
} else {
return defaultContentType; // or whatever
}
您也可以将其放入 hasHeaders
代码中,但是,typescript 编译器可能仍会或可能不会抛出该警告。
有关检查空值的更多详细信息:
通过 'truthy' 值
检查值您可以只检查该值是否为 "truthy",即它不是 null
、undefined
、0
、false
或 ''
通过将值用作布尔值,即 if (value) { /* do something */ }
或 return value || defaultValue
或 return value ? value : defaultValue
,等等
通过这种方式你可以做这样的事情:
return error.headers ?
(error.headers.get('content-type') || defaultContentType) :
defaultContentType /* or whatever */;
不过如果你的变量名很长的话会有点乱。
使用识别与相等性检查
有些人更喜欢使用===
(和!==
)(等式)而不是==
(和!=
)(等式),因为===
是更严格的检查;但是,null == undefined
等于 true,而 null === undefined
等于 false,所以在正确的地方使用正确的!
使用类型保护。类型保护是一些表达式,它执行运行时检查以保证某些范围内的类型。
在你的情况下,这样的事情可能会起作用(很难判断,因为你粘贴的是图像而不是代码):
function hasHeaders(error: Response): error is Response & { headers: Headers} {
return error.headers != null
}
您可以在 https://www.typescriptlang.org/docs/handbook/advanced-types.html
的打字手册中了解有关类型保护的更多信息