2015-11-19 75 views
1

角的$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是一个数组?

谢谢!

回答

2

类型警卫不适用于TypeScript中的属性< 2.0。他们只处理变量和参数。

你要么需要把它放在一个变量,类型戒备的......

... 只使用一个类型断言:

if ($http.defaults.transformRequest instanceof Array) { 
    return $http.defaults.transformRequest as IHttpRequestTransformer[]; 
} 
+0

没错奏效,谢谢! – rweng