【发布时间】:2017-03-18 02:50:08
【问题描述】:
使用Typescript 2.0.7
当使用q Promises 时,即使在声明函数的已定义返回类型或什至各自的 then 时,只要函数可能返回 null,任何类型限制都会被取代,并且错误的解析类型不会抛出任何错误。
import Q = require('q');
class Foo {
prop1: string;
prop2: number;
}
function test () : Q.IPromise<Foo>
{
return Q.resolve('stuff')
.then<Foo>(() =>
{
if(Math.random() > 0.5)
{
return Q.resolve({ id: 3, value: new Foo() }) // This should throw an error
}
else
{
return Q.resolve(null);
}
});
}
此外,当尝试使用 ES6 Promises 测试相同的行为时,以下代码也没有抛出错误。
function test(): Promise<Foo>
{
return new Promise((resolve, reject) => {
resolve('foo');
})
}
有人可以解释这种行为以及如何获得正确的错误,或者这是 TypeScript 的错误吗? (我见过多个描述类似情况的问题,但没有一个能真正解释这种行为)
【问题讨论】:
标签: typescript compiler-errors null promise q