我已经进行了以下测试设置,但是转换器给了我以下错误:
错误:(108,9)TS2349:无法调用类型缺少调用签名的表达式。输入'((opt_callback?:(值:Model1 [])=> R | IThenable,opt_errback?:(错误:任何......'没有兼容的呼叫签名。
//动作类
export class SearchResultsActions {
// setup and other stuff
// Model1 and Model2 are both interfaces
getJSON(): promise.Promise<Array<Model1>> | promise.Promise<Array<Model2>> {
return option.getText().then((selected: string) => {
let searchType: "model1" | "model2" = "model1";
if (selected === "Model 2") {
searchType = "model2";
}
// getResultsEl returns an ElementArrayFinder
return ResultsPage.getResultsEl().map((el, index) => {
let pageObject: Model1PageObject | Model2PageObject = SearchPage.getResult(searchType, index);
let actionObject: Model1Actions | Model2Actions;
if (searchType === "model1") {
actionObject = new Model1Actions(<Model1PageObject> pageObject);
} else {
actionObject = new Model2Actions(<Model2PageObject> pageObject)
}
// both Model1Actions and Model2Actions have a getJSON() method
return actionObject.getJSON(); // returns a JSON object
});
});
}
}
在错误所在的搜索规范中:
SearchResultsActions.getJSON()
.then((res: Array<Model1> | Array<Model2>) => {
// use lodash to perform equality
expect(_.isEqual(res, expected)).toBeTruthy();
});
奇怪的是,尽管有错误,但仍然可以进行转换并且测试通过。但是我想不要向我发出错误。
我使用的是typescript 2.3.3,量角器5.1.2
有什么想法?在哪里可以澄清一下?
答案 0 :(得分:0)
答案是将返回类型更改为
promise.Promise<Array<Model1> | Array<Model2>>
与
不同promise.Promise<Array<Model1>> | promise.Promise<Array<Model2>>
哪个不起作用。
显然,对于Observable来说也是如此。