我想创建一个在WebSocket连接时解决的承诺。
import * as WebSocket from "ws"
let ws = WebSocket("ws://example.com")
function foo(echo: string) {
return new Promise((resolve, reject) => ws.once("open", () => resolve(echo)));
}
在VS Code中,foo函数推断为产生Promise<{}>
。
Promise<{}>
?Promise<string>
?我误解了Trigger Promise when an event fires吗?答案 0 :(得分:4)
泛型将{}
(空对象)作为default parameter value。
Promise
是通用名称。由于TypeScript的限制,由于无法从resolve
参数推断出泛型类型,因此默认情况下为{}
或空对象。
应该是:
function foo(echo: string) {
return new Promise<string>((resolve, reject) => ws.once("open", () => resolve(echo)));
}