J'ai la configuration de test suivant, mais le transpiler me donne l'erreur suivante:Comment résoudre TS2349 dans un modèle de test protractor
Error:(108, 9) TS2349:Cannot invoke an expression whose type lacks a call signature. Type '((opt_callback?: (value: Model1[]) => R | IThenable, opt_errback?: (error: any...' has no compatible call signatures.
// classe l'action
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
});
});
}
}
En la spécification de recherche où l'erreur est:
SearchResultsActions.getJSON()
.then((res: Array<Model1> | Array<Model2>) => {
// use lodash to perform equality
expect(_.isEqual(res, expected)).toBeTruthy();
});
chose curieuse, malgré l'erreur, les travaux de transpile de toute façon et le test s passe. Mais je voudrais ne pas avoir l'erreur qui me frappe.
J'utilise tapuscrit 2.3.3, 5.1.2 protractor
Toute pensée? Partout où je peux clarifier?
La réponse, que j'ajouterai en guise de réponse dès que possible, est de définir le type de retour de 'getJSON() à getJSON(): promise.Promise | Tableau > ' –
Machtyn