Protractor 如何在量角器测试模型中求解TS2349

Protractor 如何在量角器测试模型中求解TS2349,protractor,typescript-typings,Protractor,Typescript Typings,我有以下测试设置,但transpiler给我以下错误: 错误:(108,9)TS2349:无法调用其类型缺少调用签名的表达式。类型“((opt_callback?:(值:Model1[])=>R|IThenable,opt_errback?:(错误:any…)没有兼容的调用签名 //动作类 export class SearchResultsActions { // setup and other stuff // Model1 and Model2 are both inte

我有以下测试设置,但transpiler给我以下错误:

错误:(108,9)TS2349:无法调用其类型缺少调用签名的表达式。类型“((opt_callback?:(值:Model1[])=>R|IThenable,opt_errback?:(错误:any…)没有兼容的调用签名

//动作类

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{
//设置和其他东西
//Model1和Model2都是接口
getJSON():promise.promise | promise.promise{
return option.getText().then((所选:字符串)=>{
让searchType:“model1”|“model2”=“model1”;
如果(所选==“型号2”){
searchType=“model2”;
}
//getResultsEl返回ElementArrayFinder
返回ResultsPage.getResultsEl().map((el,索引)=>{
让pageObject:Model1PageObject | Model2PageObject=SearchPage.getResult(searchType,index);
让actionObject:Model1Actions | Model2Actions;
如果(searchType==“model1”){
actionObject=新的Model1操作(pageObject);
}否则{
actionObject=新的Model2Actions(pageObject)
}
//Model1Actions和Model2Actions都有一个getJSON()方法
return actionObject.getJSON();//返回一个JSON对象
});
});
}
}
在搜索规范中,错误为:

SearchResultsActions.getJSON()
    .then((res: Array<Model1> | Array<Model2>) => {
        // use lodash to perform equality
        expect(_.isEqual(res, expected)).toBeTruthy();
    });
SearchResultsActions.getJSON()
.然后((res:Array | Array)=>{
//使用lodash执行相等
expect(u.isEqual(res,expected)).toBeTruthy();
});
奇怪的是,尽管出现了错误,transfile仍然可以工作,并且测试通过了。但是我不想让错误对我咆哮

我用的是打字脚本2.3.3,量角器5.1.2


有什么想法吗?我可以在哪里澄清?

答案是将返回类型更改为

promise.Promise<Array<Model1> | Array<Model2>>
promise.promise
这与

promise.Promise<Array<Model1>> | promise.Promise<Array<Model2>>
promise.promise | promise.promise
这不管用


显然,对于可观察对象也是如此。

答案是将
getJSON()的返回类型设置为getJSON():promise.promise