gpt4 book ai didi

typescript - 除 Promise 之外的任何对象?

转载 作者:搜寻专家 更新时间:2023-10-30 20:57:53 27 4
gpt4 key购买 nike

有没有办法指定一个函数接受任何 Object except 作为参数的 Promise?

(我希望编译器能够捕获缺少的“await”关键字。)

最佳答案

是的,有点。有一个技巧可以通过使用可选的 void 声明这些属性来禁止具有某些属性的对象类型。输入:

type NotAPromise<T> = T & { then?: void };

function f<T>(o: NotAPromise<T>) {
}

f(1); // ok
f({}); // ok


f(Promise.resolve(2));

Argument of type 'Promise<number>' is not assignable to parameter of type 'NotAPromise<Promise<number>>'.
Type 'Promise<number>' is not assignable to type '{ then?: void | undefined; }'.
Types of property 'then' are incompatible.
Type '<TResult1 = number, TResult2 = never>(onfulfilled?: ((value: number) => TResult1 | PromiseLike<TResult1>) | null | undefined, onrejected?: ((reason: any) => TResult2 | PromiseLike<...>) | null | undefined) => Promise<...>' is not assignable to type 'void'.

关于typescript - 除 Promise 之外的任何对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41834033/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com