mirror of
https://github.com/zhigang1992/DefinitelyTyped.git
synced 2026-06-06 06:19:58 +08:00
Merge pull request #23684 from chriskrycho/fix-computed-lookups
Ember: make `get` unwrap module computed properties.
This commit is contained in:
3
types/ember/index.d.ts
vendored
3
types/ember/index.d.ts
vendored
@@ -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> = T[];
|
||||
@@ -27,7 +28,7 @@ declare module 'ember' {
|
||||
/**
|
||||
* Deconstructs computed properties into the types which would be returned by `.get()`.
|
||||
*/
|
||||
type ComputedProperties<T> = { [K in keyof T]: Ember.ComputedProperty<T[K]> | T[K] };
|
||||
type ComputedProperties<T> = { [K in keyof T]: Ember.ComputedProperty<T[K]> | ModuleComputed<T[K]> | T[K] };
|
||||
|
||||
/**
|
||||
* Check that any arguments to `create()` match the type's properties.
|
||||
|
||||
@@ -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<string>,
|
||||
});
|
||||
|
||||
const person = Person.create({
|
||||
@@ -68,6 +70,7 @@ assertType<Ember.ComputedProperty<string>>(person.fullNameWritable);
|
||||
assertType<Ember.ComputedProperty<string>>(person.fullNameGetOnly);
|
||||
assertType<Ember.ComputedProperty<string>>(person.fullNameSetOnly);
|
||||
assertType<Ember.ComputedProperty<string>>(person.combinators);
|
||||
assertType<Ember.ComputedProperty<string>>(person.explicitlyDeclared);
|
||||
|
||||
assertType<string>(person.get('firstName'));
|
||||
assertType<number>(person.get('age'));
|
||||
@@ -78,6 +81,7 @@ assertType<string>(person.get('fullNameWritable'));
|
||||
assertType<string>(person.get('fullNameGetOnly'));
|
||||
assertType<string>(person.get('fullNameSetOnly'));
|
||||
assertType<string>(person.get('combinators'));
|
||||
assertType<string>(person.get('explicitlyDeclared'));
|
||||
|
||||
assertType<{ firstName: string, fullName: string, age: number }>(person.getProperties('firstName', 'fullName', 'age'));
|
||||
|
||||
|
||||
Reference in New Issue
Block a user