当前位置:  开发笔记 > 编程语言 > 正文

TypeScript不能确保使用正确的类型解析Promise吗?

如何解决《TypeScript不能确保使用正确的类型解析Promise吗?》经验,为你挑选了0个好方法。

这在TypeScript 2.1.5中编译时没有错误:

function promiseANumber(): Promise {
    return new Promise(resolve => resolve('definitely not a number'));
}

我希望报告错误,因为根据类型定义,使用字符串而不是数字调用resolve函数.

为什么TypeScript的编译器没有捕获和报告此类型不匹配?


编辑1

再看一下,使用异步函数定义,编译器会正确报告类型不匹配.所以这:

async function promiseANumber(): Promise {
    return 'definitely not a number';
}

error TS2322: Type '"definitely not a number"' is not assignable to type 'number'.

为什么这些案例表现不一样?


编辑2

它看起来像是让编译器正确捕获它以明确告诉它返回哪种类型的promise的方法.所以这就足够了:

function promiseANumber() {
    return new Promise(resolve => resolve('definitely not a number'));
}

编译器现在抱怨的:

error TS2345: Argument of type '"definitely not a number"' is not assignable to parameter of type 'number | Thenable'.

我想我现在的问题是,为什么编译器不能推断出这一点,考虑到我在这个问题的开头给出的定义?


编辑3

令人高兴的是,TypeScript 2.4现在为我的原始代码指出了正确的错误!这是因为它现在支持返回类型作为推理目标.该公告甚至有一个代码示例与我最初给出的示例非常相似.

推荐阅读
勤奋的瞌睡猪_715
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有