当您查看typescript异步函数时,您可以清楚地看到async和Promise<type>的冗余。
public async test(): Promise<string> {
return "Test";
}
有没有办法配置typescrypt来处理没有Promise<T>类型的异步类型?就像这样的T:
public async test(): string {
return "Test";
}
当我尝试跳过Promise< >:The return type of an async function
index.ts:
class MyPromise<T> extends Promise<T>{
}
async function testFn1(): MyPromise<void> {
return new MyPromise(resolve => resolve());
}
以上面的代码片段为例。当我使用tsc --target es6 index.ts将目标设置为ES6或更高版本时,TypeScript会显示以下编译错误。
error TS1064: The return type of an async function or me
我正在类型记录中构建一个API,有些控制器操作可以是同步的,而另一些则不能。
type ActionResult =IHttpActionResult | Promise<IHttpActionResult>;
然后,当我构建操作时,当它们变得基于承诺时,我就可以预先准备异步并完成它。
但是,type typescript抱怨说,“异步函数或方法的返回类型必须是全局允诺类型。”
为什么异步函数不能返回T | Promise<T>的联合
下面是一个例子:
type StringPromise = Promise<string>;
// These two w
这可能是一个基本的TypeScript理解问题。
Google示例使用JavaScript。我正在尝试将其中一个转换为TypeScript。
来自:
JS代码是:
// Imports the Google Cloud client library
const {Storage} = require('@google-cloud/storage');
// Creates a client
const storage = new Storage();
async function listBuckets() {
// Lists all buckets in the c
我正在尝试为interface创建一个新的扩展express.RequestHandler,但是这个错误似乎出现了。我不明白为什么。
An interface can only extend an identifier/qualified-name with optional type arguments. ts(2499)
express.RequestHandler接口不支持异步函数。上面写着
The return type of an async function or method must be the global Promise<T> type. Did you me
我创建了一个类,它有一个“has”方法。这个类与允诺类型无关;“然后”方法有不同的用途,不返回允诺。我试图在类型记录2.1.4中编写一个异步/等待函数,该函数等待并返回该类的一个实例,但是VS代码中的类型记录服务器给了我错误。如果我将该方法重命名为“然后”以外的其他内容,那么错误就会消失。
带有错误的示例代码:
class MyClass {
then(): number {
// this method isn't related to Promise.then
return 2 + 2;
}
}
// three errors be
我想声明参数类型是()=>AnythingExceptAPromise类型,最好不使用泛型。
// Declaring that a callback function MUST return a Promise is trivial:
function asyncFunctionCaller(f: ()=>PromiseLike<any>){
return f();
}
// Works!
asyncFunctionCaller(async ()=>{
return 5;
})
// Correctly errors:
asyncFuncti
我不能声明函数,这是对的承诺。下一个原因是:
interface Some {
then(callback);
}
// Error: the return type of an async function must either be a valid promise or must not contain a callable 'then' member.
async function foo(): Promise<Some> {
return null;
}
是打字稿中的错误吗?有什么解决办法吗?因此,我不能使用异步/等待。
我想要一些JavaScript代码将3件事情作为参数:
返回承诺的函数。
最大尝试次数。
我最后所做的是使用一个for循环。我不想使用递归函数:这样,即使有50次尝试,调用堆栈也不会再长50行。
下面是代码的类型文本版本:
/**
* @async
* @function tryNTimes<T> Tries to resolve a {@link Promise<T>} N times, with a delay between each attempt.
* @param {Object} options Options for the attempts.
当我运行下面的post()函数时,我得到了以下错误信息:
Type 'void' must have a '[Symbol.iterator]()' method that returns an iterator.
下面是我尝试运行的内容:
static async post(options:object) {
const promise = postRequest(options)
const [err, data] = await this.promiseWapper(promise);
return [err, data]
因此,我使用jest测试我的节点函数,该函数调用fetch() APi来获取数据,现在当我为相同的测试用例编写测试用例时,我得到了一个错误,如下所示:
expect(received).resolves.toEqual()
Matcher error: received value must be a promise
Received has type: function
Received has value: [Function mockConstructor]
我的职能:
export function dataHandler (req, res, next
我想要一些JavaScript代码将3件事情作为参数:
返回承诺的函数。
最大尝试次数。
每次尝试之间的延迟。
我最后所做的是使用一个for循环。我不想使用递归函数:这样,即使有50次尝试,调用堆栈也不会再长50行。
下面是代码的类型记录版本:
/**
* @async
* @function tryNTimes<T> Tries to resolve a {@link Promise<T>} N times, with a delay between each attempt.
* @param {Object} options Option
我将捕获放在末尾,但它们至少在一个特定的实例中返回空对象。对任何未知的事情来说都是必须的,还是只是把我搞砸了?
$( document).ready(function(){
app.callAPI()//a chainable a RSVP wrapper around a jquery call, with its own success() fail() passing forward to the wrapper, so it will either be a resolved or rejected thenable to which is now going to be ch
我正在实现如下类:
import * as User from './user';
export class Database {
constructor() {
for (const method in User) {
this[method] = User[method];
}
}
}
其中./user文件包含:
export async function findById(id: number): Promise<User | null> {
return //
}
export async function fin
我有一些反应代码,它会产生一个错误:The right-hand side of an 'in' expression must not be a primitive.。我不知道如何妥善解决这个问题:
// I want to allow null, string, object, arrays, etc as may be returned from a request
type APIGatewaySuccessResponse = unknown
...
const [data, setData] = useState<T>(
我试图为Next.js +类型记录应用程序创建一个缓存的猫鼬连接,但使用:
let cached = global.mongoose;
if (!cached) {
cached = global.mongoose = { conn: null, promise: null };
}
global.mongoose显示了以下错误:
Element implicitly has an 'any' type because type 'typeof globalThis' has no index signature.ts(7017)
编辑:这里是完整的/li
? 当我在ci管道上编译时,我在控制台上得到一个错误Type 'undefined' is not assignable to type 'T'和'return void 0‘错误。有人能说出代码中哪里出了问题吗?我该如何解决这些错误 export function wait(ms: number): Promise<void> {
return new Promise(resolve => {
setTimeout(resolve, ms)
})
}
export async function mapAsync
我正在尝试将next.js /examples/ within /util/monGodb.js转换为TS,这样我就可以在TS next.js项目中缓存和重用与Mongo的连接。我在cache.promise上得到了一个TS错误,上面写着:Type 'Promise<MongoClient | { client: MongoClient; db: Db; }>' is not assignable to type 'Promise<MongoClient>'
我应该如何正确地宣布世界上的芒果财产,以安抚TS神?
import { Mong
我正在使用word javaScript Api开发Word加载项,我需要从服务器加载文件并将内容插入到文档中,目前.docx文件工作正常并插入到文档中,但当我尝试将.rtf格式的文件内容插入到文档中时,word抛出以下错误:
Error: {"name":"OfficeExtension.Error","code":"RunMustReturnPromise","message":"The batch function passed to the \".run\" method didn&
我在TypeScript中有一个非异步函数类型,我想要相同的函数类型,但是要异步。
// this is a function type
type MyFunction = (x: number) => void;
// this is an async version of the same function type, created explicitly
type AsyncMyFunction = (x: number) => Promise<void>;
MyFunction可以是任何函数,所以更一般地说它是(...args: any[]) => any