From 11b1d566320af392af28ba8c0786c728741dd30e Mon Sep 17 00:00:00 2001 From: Chris Krycho Date: Tue, 20 Sep 2022 18:06:14 -0600 Subject: [PATCH] [BUGFIX beta]: fix type definition for `Route` 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 5f8e4211fb5eb558e8d00024bc4d72f8413b8b07) --- type-tests/preview/ember/route.ts | 18 ++++++++++++++++++ types/preview/@ember/routing/route.d.ts | 7 +++---- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/type-tests/preview/ember/route.ts b/type-tests/preview/ember/route.ts index e532cfbbc05..ec17310c153 100755 --- a/type-tests/preview/ember/route.ts +++ b/type-tests/preview/ember/route.ts @@ -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 @@ -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; + }>(); + } +} diff --git a/types/preview/@ember/routing/route.d.ts b/types/preview/@ember/routing/route.d.ts index c2005e66153..f6c472d7920 100644 --- a/types/preview/@ember/routing/route.d.ts +++ b/types/preview/@ember/routing/route.d.ts @@ -8,14 +8,13 @@ declare module '@ember/routing/route' { type RouteModel = object | string | number; + export default interface Route 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 extends EmberObject { // methods /** * This hook is called after this route's model has resolved. It follows