【发布时间】:2017-04-28 22:33:14
【问题描述】:
我创建了一个具有“then”方法的类。该类与 Promise 类型无关; "then" 方法有不同的目的,并且不返回承诺。我正在尝试在 Typescript 2.1.4 中编写一个 async/await 函数来等待并返回此类的一个实例,但是 VS Code 中的 Typescript 服务器给了我错误。如果我将方法重命名为“then”以外的名称,错误就会消失。
有错误的示例代码:
class MyClass {
then(): number {
// this method isn't related to Promise.then
return 2 + 2;
}
}
// three errors below go away when "then" is renamed
// [ts] An async function or method must have a valid awaitable return type.
async function my_async(): Promise<MyClass> {
let a: Promise<MyClass> = Promise.resolve(new MyClass());
// [ts] Operand for 'await' does not have a valid callable 'then' member.
let b: MyClass = await a;
// [ts] Return expression in async function does not have a valid callable 'then' member.
return b;
}
有人可以解释为什么不允许对具有自己的“then”方法的对象使用承诺,或者解决方法吗?
【问题讨论】:
-
你没有说错误是什么。这很重要。
-
@Carcigenicate 谢谢,我的错!
-
请同时发布代码。该错误似乎与您的返回类型有关。
-
@Carcigenicate 更新了示例代码,希望这能解决所有问题!
-
拥有一个并非来自承诺的
.then方法似乎有点奇怪。
标签: javascript asynchronous typescript promise