我很喜欢编译器--strictNullCheck选项
我有这个方法:
我需要先检查标题是否不为空,然后才能使用它们。那太棒了
现在我想将检查操作移至这样的单独方法:
但不是我收到此错误:
所以没有办法在单独的方法中检查某个对象或其某些属性是否不为空?
我很喜欢编译器--strictNullCheck选项
我有这个方法:
我需要先检查标题是否不为空,然后才能使用它们。那太棒了
现在我想将检查操作移至这样的单独方法:
但不是我收到此错误:
所以没有办法在单独的方法中检查某个对象或其某些属性是否不为空?
使用类型保护。类型保护是一些表达式,它执行运行时检查以保证某个范围内的类型。
在您的情况下,这样的事情可能会起作用(因为您粘贴的是图像而不是代码,所以很难说):
function hasHeaders(error: Response): error is Response & { headers: Headers} {
return error.headers != null
}
您可以在https://www.typescriptlang.org/docs/handbook/advanced-types.html了解有关 typescript 手册中类型保护的更多信息
它应该很简单:
if(err.headers != null) {
return error.headers.get('content-type') || defaultContentType;
} else {
return defaultContentType; // or whatever
}
你也可以把它放在你的hasHeaders
代码中,但是,打字稿编译器可能会也可能不会抛出那个警告。
关于检查空值的更多细节:
您可以检查该值是否“真实”,即它不是null
, undefined
, 0
, false
,或者''
使用该值作为布尔值,即if (value) { /* do something */ }
or return value || defaultValue
orreturn value ? value : defaultValue
等。
通过这种方式,您可以执行以下操作:
return error.headers ?
(error.headers.get('content-type') || defaultContentType) :
defaultContentType /* or whatever */;
尽管如果您的变量名很长,这可能会有点混乱。
有些人更喜欢使用===
(and !==
) (identity) 而不是==
(and !=
) (equality),因为这===
是更严格的检查;然而,null == undefined
等于真,而null === undefined
等于假,所以在正确的地方使用正确的!