From 7be938ddc67d381c4274b9deb852adb96dc5bace Mon Sep 17 00:00:00 2001 From: Chris Krycho Date: Thu, 15 Feb 2018 15:39:25 -0700 Subject: [PATCH] Ember: make `get` unwrap module computed properties. --- types/ember/index.d.ts | 3 ++- types/ember/test/computed.ts | 8 ++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/types/ember/index.d.ts b/types/ember/index.d.ts index 4a3d7d45d1..349eb0f827 100755 --- a/types/ember/index.d.ts +++ b/types/ember/index.d.ts @@ -20,6 +20,7 @@ declare module 'ember' { import { Registry as ServiceRegistry } from '@ember/service'; import { Registry as ControllerRegistry } from '@ember/controller'; + import ModuleComputed from '@ember/object/computed'; // Get an alias to the global Array type to use in inner scope below. type GlobalArray = T[]; @@ -27,7 +28,7 @@ declare module 'ember' { /** * Deconstructs computed properties into the types which would be returned by `.get()`. */ - type ComputedProperties = { [K in keyof T]: Ember.ComputedProperty | T[K] }; + type ComputedProperties = { [K in keyof T]: Ember.ComputedProperty | ModuleComputed | T[K] }; /** * Check that any arguments to `create()` match the type's properties. diff --git a/types/ember/test/computed.ts b/types/ember/test/computed.ts index c812ef62b3..f93b07a0f5 100755 --- a/types/ember/test/computed.ts +++ b/types/ember/test/computed.ts @@ -1,6 +1,6 @@ import Ember from 'ember'; import Component from '@ember/component'; -import { or } from '@ember/object/computed'; +import Computed, { alias, or } from '@ember/object/computed'; import { assertType } from './lib/assert'; const Person = Ember.Object.extend({ @@ -50,7 +50,9 @@ const Person = Ember.Object.extend({ }).property('firstName') .meta({ foo: 'bar' }) .volatile() - .readOnly() + .readOnly(), + + explicitlyDeclared: alias('fullName') as Computed, }); const person = Person.create({ @@ -68,6 +70,7 @@ assertType>(person.fullNameWritable); assertType>(person.fullNameGetOnly); assertType>(person.fullNameSetOnly); assertType>(person.combinators); +assertType>(person.explicitlyDeclared); assertType(person.get('firstName')); assertType(person.get('age')); @@ -78,6 +81,7 @@ assertType(person.get('fullNameWritable')); assertType(person.get('fullNameGetOnly')); assertType(person.get('fullNameSetOnly')); assertType(person.get('combinators')); +assertType(person.get('explicitlyDeclared')); assertType<{ firstName: string, fullName: string, age: number }>(person.getProperties('firstName', 'fullName', 'age'));