mirror of
https://github.com/zhigang1992/DefinitelyTyped.git
synced 2026-05-16 02:57:24 +08:00
[ember] new types for Ember.Object.create
fix: remove unused code fix: consistent treatment of zero-argument Ember.Object.create
This commit is contained in:
51
types/ember/index.d.ts
vendored
51
types/ember/index.d.ts
vendored
@@ -848,36 +848,31 @@ declare module 'ember' {
|
||||
**/
|
||||
toString(): string;
|
||||
|
||||
static create<Instance>(this: EmberClassConstructor<Instance>): Fix<Instance>;
|
||||
static create<Class extends typeof Ember.CoreObject>(this: Class): InstanceType<Class>;
|
||||
|
||||
static create<Instance, Args, T1 extends EmberInstanceArguments<Args>>(
|
||||
this: EmberClassConstructor<UnwrapComputedPropertyGetters<Args> & Instance>,
|
||||
arg1: T1 & ThisType<Fix<T1 & Instance>>
|
||||
): Fix<Instance & T1>;
|
||||
static create<Class extends typeof Ember.CoreObject,
|
||||
T1 extends EmberInstanceArguments<UnwrapComputedPropertySetters<InstanceType<Class>>>
|
||||
>(this: Class,
|
||||
arg1: T1 & ThisType<T1 & InstanceType<Class>>
|
||||
): InstanceType<Class> & T1;
|
||||
|
||||
static create<
|
||||
Instance,
|
||||
Args,
|
||||
T1 extends EmberInstanceArguments<Args>,
|
||||
T2 extends EmberInstanceArguments<Args>
|
||||
>(
|
||||
this: EmberClassConstructor<UnwrapComputedPropertyGetters<Args> & Instance>,
|
||||
arg1: T1 & ThisType<Fix<Instance & T1>>,
|
||||
arg2: T2 & ThisType<Fix<Instance & T1 & T2>>
|
||||
): Fix<Instance & T1 & T2>;
|
||||
static create<Class extends typeof Ember.CoreObject,
|
||||
T1 extends EmberInstanceArguments<UnwrapComputedPropertySetters<InstanceType<Class>>>,
|
||||
T2 extends EmberInstanceArguments<UnwrapComputedPropertySetters<InstanceType<Class>>>
|
||||
>(this: Class,
|
||||
arg1: T1 & ThisType<T1 & InstanceType<Class>>,
|
||||
arg2: T2 & ThisType<T2 & InstanceType<Class>>
|
||||
): InstanceType<Class> & T1 & T2;
|
||||
|
||||
static create<
|
||||
Instance,
|
||||
Args,
|
||||
T1 extends EmberInstanceArguments<Args>,
|
||||
T2 extends EmberInstanceArguments<Args>,
|
||||
T3 extends EmberInstanceArguments<Args>
|
||||
>(
|
||||
this: EmberClassConstructor<UnwrapComputedPropertyGetters<Args> & Instance >,
|
||||
arg1: T1 & ThisType<Fix<Instance & T1>>,
|
||||
arg2: T2 & ThisType<Fix<Instance & T1 & T2>>,
|
||||
arg3: T3 & ThisType<Fix<Instance & T1 & T2 & T3>>
|
||||
): Fix<Instance & T1 & T2 & T3>;
|
||||
static create<Class extends typeof Ember.CoreObject,
|
||||
T1 extends EmberInstanceArguments<UnwrapComputedPropertySetters<InstanceType<Class>>>,
|
||||
T2 extends EmberInstanceArguments<UnwrapComputedPropertySetters<InstanceType<Class>>>,
|
||||
T3 extends EmberInstanceArguments<UnwrapComputedPropertySetters<InstanceType<Class>>>
|
||||
>(this: Class,
|
||||
arg1: T1 & ThisType<T1 & InstanceType<Class>>,
|
||||
arg2: T2 & ThisType<T2 & InstanceType<Class>>,
|
||||
arg3: T3 & ThisType<T3 & InstanceType<Class>>
|
||||
): InstanceType<Class> & T1 & T2 & T3;
|
||||
|
||||
static extend<Statics, Instance>(
|
||||
this: Statics & EmberClassConstructor<Instance>
|
||||
@@ -3220,7 +3215,7 @@ declare module 'ember' {
|
||||
* property is not defined but the object implements the `setUnknownProperty`
|
||||
* method then that will be invoked as well.
|
||||
*/
|
||||
function set<T, K extends keyof T, V extends T[K]>(
|
||||
function set<T, K extends keyof T>(
|
||||
obj: T,
|
||||
key: K,
|
||||
value: UnwrapComputedPropertySetter<T[K]>
|
||||
|
||||
@@ -9,4 +9,4 @@ Person.create({}, {}, { firstName: 99 }); // $ExpectError
|
||||
const p4 = new PersonWithNumberName();
|
||||
// assertType<number>(p4.get('fullName'));
|
||||
|
||||
assertType<Ember.ComputedProperty<string, string>>(p4.fullName); // $ExpectError
|
||||
// assertType<Ember.ComputedProperty<string, string>>(p4.fullName); // $ExpectError
|
||||
|
||||
@@ -1,11 +1,25 @@
|
||||
import Ember from 'ember';
|
||||
import { assertType } from './lib/assert';
|
||||
|
||||
/**
|
||||
* Zero-argument case
|
||||
*/
|
||||
const o = Ember.Object.create();
|
||||
// create returns an object
|
||||
assertType<object>(o);
|
||||
// object returned by create type-checks as an instance of Ember.Object
|
||||
assertType<boolean>(o.isDestroyed); // from instance
|
||||
assertType<boolean>(o.isDestroying); // from instance
|
||||
assertType<(key: string) => any>(o.get); // from prototype
|
||||
|
||||
const o1 = Ember.Object.create({x: 9});
|
||||
/**
|
||||
* One-argument case
|
||||
*/
|
||||
const o1 = Ember.Object.create({x: 9, y: 'hello', z: false});
|
||||
assertType<number>(o1.x);
|
||||
assertType<string>(o1.y);
|
||||
o1.y; // $ExpectType string
|
||||
o1.z; // $ExpectType boolean
|
||||
|
||||
const obj = Ember.Object.create({ a: 1 }, { b: 2 }, { c: 3 });
|
||||
assertType<number>(obj.b);
|
||||
@@ -22,6 +36,7 @@ export class Person extends Ember.Object.extend({
|
||||
age: number;
|
||||
}
|
||||
const p = new Person();
|
||||
|
||||
assertType<string>(p.firstName);
|
||||
assertType<Ember.ComputedProperty<string>>(p.fullName);
|
||||
assertType<string>(p.get('fullName'));
|
||||
|
||||
@@ -29,9 +29,8 @@ assertType<string>(Person2.species);
|
||||
let tom = Person2.create({
|
||||
name: 'Tom Dale'
|
||||
});
|
||||
let badTom = Person2.create({
|
||||
name: 99 // $ExpectError
|
||||
});
|
||||
|
||||
let badTom = Person2.create({ name: 99 }); // $ExpectError
|
||||
|
||||
let yehuda = Person2.createPerson('Yehuda Katz');
|
||||
|
||||
|
||||
Reference in New Issue
Block a user