Skip to content

Commit

Permalink
[BUGFIX beta]: fix type definition for Route
Browse files Browse the repository at this point in the history
This was the only remaining use of `.extend()` to apply the associated
mixin, and the types were longer working correctly since `.extend()` no
longer creates new types.

(cherry picked from commit 5f8e421)
  • Loading branch information
chriskrycho authored and kategengler committed Sep 26, 2022
1 parent dd86f3d commit 11b1d56
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 4 deletions.
18 changes: 18 additions & 0 deletions type-tests/preview/ember/route.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@ import Route from '@ember/routing/route';
import Array from '@ember/array';
import Ember from 'ember'; // currently needed for Transition
import Transition from '@ember/routing/transition';
import { expectTypeOf } from 'expect-type';
import { AnyFn } from 'ember/-private/type-utils';

// Ensure that Ember.Transition is private
// @ts-expect-error
Expand Down Expand Up @@ -84,3 +86,19 @@ class WithBadReturningBeforeAndModelHooks extends Route {
return "returning anything else is nonsensical (if 'legal')";
}
}

class HasEvented extends Route {
methodUsingEvented() {
this.on('some-event', this, 'aMethod');
}

aMethod() {}
}

class HasActionHandler extends Route {
methodUsingActionHandler() {
expectTypeOf(this.actions).toEqualTypeOf<{
[index: string]: AnyFn;
}>();
}
}
7 changes: 3 additions & 4 deletions types/preview/@ember/routing/route.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,13 @@ declare module '@ember/routing/route' {

type RouteModel = object | string | number;

export default interface Route<Model, Params extends object> extends ActionHandler, Evented {}

/**
* The `Ember.Route` class is used to define individual routes. Refer to
* the [routing guide](http://emberjs.com/guides/routing/) for documentation.
*/
export default class Route<
Model = unknown,
Params extends object = object
> extends EmberObject.extend(ActionHandler, Evented) {
export default class Route<Model = unknown, Params extends object = object> extends EmberObject {
// methods
/**
* This hook is called after this route's model has resolved. It follows
Expand Down

0 comments on commit 11b1d56

Please sign in to comment.