С TypeScript 1.6 и собственными обещаниями es6 я получаю сообщение об ошибке всякий раз, когда использую Promise.all([])
с двумя разными типами возврата. Например:
let onePromise:Promise<string[]> = getOne();
let twoPromise:Promise<MyObject> = getTwo();
Promise.all([onePromise, twoPromise])
.then((values:[string[], MyObject]) => {
let one:string[] = values[0];
let two:MyObject = values[1];
// do stuff
});
В этом примере я получаю ошибку в строке Promise.all
от компилятора TypeScript error TS2453: The type argument for type parameter 'R' cannot be inferred from the usage. Consider specifying the type arguments explicitly. Type argument candidate 'string[]' is not a valid type argument because it is not a supertype of candidate 'MyObject'. Property 'length' is missing in type 'MyObject'.
На самом деле у меня есть еще один пример этого, где второе и третье предложения ошибки разные, но первое предложение такое же. Так что в основном мне интересно, что такое синтаксис для «явного указания аргументов типа». Я не могу понять это. Код работает нормально, но я хотел бы избавиться от этого предупреждения транспилятора.