2016-05-23 5 views
1

Als ich die JavaScript-doc für die unten Funktion hinzufügen, wird es mir sagen, eine Warnung, dassRückgabeausdruckstyp "Promise" <T> kann keinem Typ "Promise" zugewiesen werden <T>?

Return expression type Promise<T> is not assignable to a type Promise<T> 

Gibt es etwas unterhalb der Rückkehr defer.promise falsch verwenden oder muss ich mich in einem falschen Ort der return-Anweisung setzen ?

/** 
    * 
    * @param zname 
    * @returns {Promise<T>} 
    */ 
    this.setInfoFromAPI = function (name) { 
     var defer = protractor.promise.defer(); 
     var controlFlow = protractor.promise.controlFlow(); 
     httpRequestUtility.getRestfulAPIToken().then(function (accessToken) { 
      console.log("Access Token is " + accessToken); 
      controlFlow.wait(
       getInfoFromAPI(accessToken, name).then(function (returnData) { 
        if (String(returnData).match(httpStatusCodeClientErrorRegx)) { 
         defer.reject('Get Request Error for Zone Info\nResponse Error Code - ' + returnData); 
        } else { 
         setUpInfoFromAPI(returnData); 
         defer.fulfill(); 
        } 
       }), 60000, 'Get Information').then(function() { 
      }) 
     }); 
     return defer.promise; 
    }; 
+1

Vielleicht einer von ihnen ist ein anguarl Versprechen und das andere ist ein Versprechen Winkelmesser? – Bergi

+2

BTW, vermeiden Sie die [latente Antipattern] (http://stackoverflow.com/q/23803743/1048572)! – Bergi

Antwort

1

versuchen, eine explizite webdriver.promise.Promise statt Promise mit:

@returns {webdriver.promise.Promise<T>}