使用TypeScript 1.6和native es6 Promises每当我使用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
});
在该示例中,我在TypeScript编译器Promise.all
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'.
行上收到错误
我实际上有另一个例子,其中错误的第二句和第三句不同,但第一句是相同的。所以基本上我想知道'明确指定类型参数'的语法是什么。我似乎无法弄明白。代码运行正常,但我想摆脱这个转发器警告。
答案 0 :(得分:3)
这是一个解决方法:
['m','a','b','c','d']
垂直条用于指定可以是多种类型之一的值。
答案 1 :(得分:1)
我只知道这个解决方法:
///<reference path="typings/es6-promise/es6-promise.d.ts" />
class MyObject {}
let onePromise:Promise<string[]> = null;
let twoPromise:Promise<MyObject> = null;
Promise.all([onePromise, twoPromise])
.then((data:any) => {
let values:[string[],MyObject] = data;
let one = values[0];
let two = values[1];
// do stuff
});