It should be pretty simple:
if(err.headers != null) {
return error.headers.get('content-type') || defaultContentType;
} else {
return defaultContentType; // or whatever
}
You could also put that in your hasHeaders code, however, the typescript compiler may or may not still throw that warning.
A couple more details about checking for nulls though:
Checking values via their 'truthy' value
You can just check if the value is "truthy", i.e. it is not null, undefined, 0, false, or '' by using the value as a boolean, i.e. if (value) { /* do something */ } or return value || defaultValue or return value ? value : defaultValue, etc.
In this way you can do something like this:
return error.headers ?
(error.headers.get('content-type') || defaultContentType) :
defaultContentType /* or whatever */;
Though that can be a little messy if your variable names are long.
Using identify vs equality checks
Some people prefer to use === (and !==) (identity) instead of == (and !=) (equality), because === is a stricter check; however, null == undefined is equal to true, whereas null === undefined is equal to false, so use the correct one in the correct place!