Angular的$http.defaults.transformRequest
定义为:
transformRequest?: IHttpRequestTransformer |IHttpRequestTransformer[];
现在我想附加一个自己的变换器,所以我需要检查这是否已经是一个数组。我认为一个简单的打字机
function x(): angular.IHttpRequestTransformer[] {
if($http.defaults.transformRequest instanceof Array){
return $http.defaults.transformRequest;
}
}
然而,会起作用,在if子句中仍然认为它是一个联合类型。我还尝试了instanceof
和$http.defaults.transformRequest.length === undefined
,没有任何效果。
任何人都可以向我暗示我如何告诉IDEA我已经确保$http.defaults.transformRequest
是一个阵列吗?
感谢!
答案 0 :(得分:2)
类型保护不适用于TypeScript中的属性< 2.0。它们只适用于变量和参数。
你需要把它放在一个变量中并键入后卫...
let transformRequest = $http.defaults.transformRequest;
if (transformRequest instanceof Array) {
return transformRequest;
}
... 或只使用类型断言:
if ($http.defaults.transformRequest instanceof Array) {
return $http.defaults.transformRequest as IHttpRequestTransformer[];
}