如何解决打字稿工会类型的接口类型警卫
问题描述:
角的$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
是一个数组?
谢谢!
答
类型警卫不适用于TypeScript中的属性< 2.0。他们只处理变量和参数。
你要么需要把它放在一个变量,类型戒备的......
... 或只使用一个类型断言:
if ($http.defaults.transformRequest instanceof Array) {
return $http.defaults.transformRequest as IHttpRequestTransformer[];
}
没错奏效,谢谢! – rweng