typescript - 解析参数的返回类型被推断为对象?
问题描述
以下不会编译:
function P() {
return new Promise((resolve, reject) => {
const stringValue:string = "...explicit string...";
resolve(stringValue);
});
}
async function f() {
let s:string = "";
await P().then((res) => { s = res; });
}
错误在声明中s = res
:
[ts] 类型“{}”不可分配给类型“字符串”。
为什么会这样?
解决方案
您必须明确指定返回类型。
function P(): Promise<string> {
return new Promise((resolve, reject) => {
const stringValue:string = "...explicit string...";
resolve(stringValue);
});
}
async function f() {
let s:string = "";
await P().then((res) => { s = res; });
}
TypeScript 假定 P 的返回类型是Promise<{}>
您未指定返回类型时。您可以在https://www.typescriptlang.org/play/index.html查看它,在左侧输入您的代码并将鼠标放在 上P().then(
,您将看到 typescript 假定返回类型为Promise<{}>
.
推荐阅读
- mysql - 在子查询中使用基表的字段不起作用
- mongodb - MongoDB 集合架构和数据模型
- amazon-web-services - AWS - 识别 Lambda 从 DynamoDB 流中读取的数据
- php - I am looking for a way to compare months in PHP
- angular - 更改参数而不更改订阅
- javascript - 使用 Javascript 使用选择选项重新编号动态表单集后,选定的选项将被删除
- android - 如何从将服务扩展到 MainActivity 的 LocationServices 活动传递纬度 n 经度值以在屏幕上而不是 Log.d 显示它们
- ios - IOS 通知 React Native
- c++ - std::string 的强 typedef
- c++ - nullptr 和 NULL 之间的转换