2015-11-19 80 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