emberjs / ember-test-waiters

An Ember addon to allow @ember/test-helpers to manage asynchronous operations
MIT License
29 stars 15 forks source link

Runloop compatible `waitFor` type #447

Open nwhittaker opened 1 year ago

nwhittaker commented 1 year ago

Is it feasible to provide a type for waitFor that is compatible with Ember's runloop functions?

Looking to do something like:

schedule('afterRender', waitFor(async () => { … }))

However this currently throws a type error:

Argument of type 'Function' is not assignable to parameter of type 'AnyFn'.
  Type 'Function' provides no match for the signature '(...args: any[]): unknown'. ts(2345)

Adding this function override appears to minimally be enough to clear up the issue:

export default function waitFor(fn: AsyncFunction<any[], any>, label?: string): (...args: any[]) => unknown;

A possibly more robust solution:

export default function waitFor(fn: AsyncFunction<unknown[], unknown>, label?: string): (...args: unknown[]) => unknown;