@@ -86,6 +86,24 @@ function f40<T>(x: T, y: Readonly<T>) {
8686function f41< T > (x: T, y: Readonly< T > ) {
8787 x = y ;
8888 y = x ;
89+ }
90+
91+ type Item = {
92+ name : string ;
93+ }
94+
95+ type ItemMap = {
96+ [ x : string ] : Item ;
97+ }
98+
99+ function f50< T extends ItemMap > (obj: T, key: keyof T) {
100+ let item : Item = obj [ key ] ;
101+ return obj [ key ] . name ;
102+ }
103+
104+ function f51< T extends ItemMap , K extends keyof T > (obj: T, key: K) {
105+ let item : Item = obj [ key ] ;
106+ return obj [ key ] . name ;
89107}
90108
91109//// [mappedTypeRelationships.js]
@@ -159,6 +177,14 @@ function f41(x, y) {
159177 x = y ;
160178 y = x ;
161179}
180+ function f50(obj, key) {
181+ var item = obj [ key ] ;
182+ return obj [ key ] . name ;
183+ }
184+ function f51(obj, key) {
185+ var item = obj [ key ] ;
186+ return obj [ key ] . name ;
187+ }
162188
163189
164190//// [mappedTypeRelationships.d.ts]
@@ -180,3 +206,11 @@ declare function f30<T>(x: T, y: Partial<T>): void;
180206declare function f31< T > (x: T, y: Partial< T > ): void;
181207declare function f40< T > (x: T, y: Readonly< T > ): void;
182208declare function f41< T > (x: T, y: Readonly< T > ): void;
209+ declare type Item = {
210+ name : string ;
211+ } ;
212+ declare type ItemMap = {
213+ [ x : string ] : Item ;
214+ } ;
215+ declare function f50< T extends ItemMap > (obj: T, key: keyof T): string;
216+ declare function f51< T extends ItemMap , K extends keyof T > (obj: T, key: K): string;
0 commit comments