=== tests/cases/compiler/genericInference2.ts === declare module ko { >ko : Symbol(ko, Decl(genericInference2.ts, 0, 0)) export interface Observable { >Observable : Symbol(Observable, Decl(genericInference2.ts, 0, 23)) >T : Symbol(T, Decl(genericInference2.ts, 1, 35)) (): T; >T : Symbol(T, Decl(genericInference2.ts, 1, 35)) (value: T): any; >value : Symbol(value, Decl(genericInference2.ts, 3, 12)) >T : Symbol(T, Decl(genericInference2.ts, 1, 35)) N: number; >N : Symbol(N, Decl(genericInference2.ts, 3, 27)) g: boolean; >g : Symbol(g, Decl(genericInference2.ts, 4, 21)) r: T; >r : Symbol(r, Decl(genericInference2.ts, 5, 22)) >T : Symbol(T, Decl(genericInference2.ts, 1, 35)) } export function observable(value: T): Observable; >observable : Symbol(observable, Decl(genericInference2.ts, 7, 8)) >T : Symbol(T, Decl(genericInference2.ts, 8, 34)) >value : Symbol(value, Decl(genericInference2.ts, 8, 37)) >T : Symbol(T, Decl(genericInference2.ts, 8, 34)) >Observable : Symbol(Observable, Decl(genericInference2.ts, 0, 23)) >T : Symbol(T, Decl(genericInference2.ts, 8, 34)) } var o = { >o : Symbol(o, Decl(genericInference2.ts, 10, 7)) name: ko.observable("Bob"), >name : Symbol(name, Decl(genericInference2.ts, 10, 13)) >ko.observable : Symbol(ko.observable, Decl(genericInference2.ts, 7, 8)) >ko : Symbol(ko, Decl(genericInference2.ts, 0, 0)) >observable : Symbol(ko.observable, Decl(genericInference2.ts, 7, 8)) age: ko.observable(37) >age : Symbol(age, Decl(genericInference2.ts, 11, 34)) >ko.observable : Symbol(ko.observable, Decl(genericInference2.ts, 7, 8)) >ko : Symbol(ko, Decl(genericInference2.ts, 0, 0)) >observable : Symbol(ko.observable, Decl(genericInference2.ts, 7, 8)) }; var x_v = o.name().length; // should be 'number' >x_v : Symbol(x_v, Decl(genericInference2.ts, 14, 7)) >o.name().length : Symbol(String.length, Decl(lib.d.ts, 414, 19)) >o.name : Symbol(name, Decl(genericInference2.ts, 10, 13)) >o : Symbol(o, Decl(genericInference2.ts, 10, 7)) >name : Symbol(name, Decl(genericInference2.ts, 10, 13)) >length : Symbol(String.length, Decl(lib.d.ts, 414, 19)) var age_v = o.age(); // should be 'number' >age_v : Symbol(age_v, Decl(genericInference2.ts, 15, 7)) >o.age : Symbol(age, Decl(genericInference2.ts, 11, 34)) >o : Symbol(o, Decl(genericInference2.ts, 10, 7)) >age : Symbol(age, Decl(genericInference2.ts, 11, 34)) var name_v = o.name("Robert"); // should be 'any' >name_v : Symbol(name_v, Decl(genericInference2.ts, 16, 7)) >o.name : Symbol(name, Decl(genericInference2.ts, 10, 13)) >o : Symbol(o, Decl(genericInference2.ts, 10, 7)) >name : Symbol(name, Decl(genericInference2.ts, 10, 13)) var zz_v = o.name.N; // should be 'number' >zz_v : Symbol(zz_v, Decl(genericInference2.ts, 17, 7)) >o.name.N : Symbol(ko.Observable.N, Decl(genericInference2.ts, 3, 27)) >o.name : Symbol(name, Decl(genericInference2.ts, 10, 13)) >o : Symbol(o, Decl(genericInference2.ts, 10, 7)) >name : Symbol(name, Decl(genericInference2.ts, 10, 13)) >N : Symbol(ko.Observable.N, Decl(genericInference2.ts, 3, 27)) var yy_v = o.name.g; // should be 'boolean' >yy_v : Symbol(yy_v, Decl(genericInference2.ts, 18, 7)) >o.name.g : Symbol(ko.Observable.g, Decl(genericInference2.ts, 4, 21)) >o.name : Symbol(name, Decl(genericInference2.ts, 10, 13)) >o : Symbol(o, Decl(genericInference2.ts, 10, 7)) >name : Symbol(name, Decl(genericInference2.ts, 10, 13)) >g : Symbol(ko.Observable.g, Decl(genericInference2.ts, 4, 21)) var rr_v = o.name.r; // should be 'string' >rr_v : Symbol(rr_v, Decl(genericInference2.ts, 19, 7)) >o.name.r : Symbol(ko.Observable.r, Decl(genericInference2.ts, 5, 22)) >o.name : Symbol(name, Decl(genericInference2.ts, 10, 13)) >o : Symbol(o, Decl(genericInference2.ts, 10, 7)) >name : Symbol(name, Decl(genericInference2.ts, 10, 13)) >r : Symbol(ko.Observable.r, Decl(genericInference2.ts, 5, 22))