Skip to content

Commit a41746b

Browse files
ahejlsbergmhegazy
authored andcommitted
Add tests
1 parent dad5736 commit a41746b

File tree

3 files changed

+70
-0
lines changed

3 files changed

+70
-0
lines changed

tests/baselines/reference/mappedTypeRelationships.errors.txt

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -162,4 +162,22 @@ tests/cases/conformance/types/mapped/mappedTypeRelationships.ts(76,5): error TS2
162162
function f41<T>(x: T, y: Readonly<T>) {
163163
x = y;
164164
y = x;
165+
}
166+
167+
type Item = {
168+
name: string;
169+
}
170+
171+
type ItemMap = {
172+
[x: string]: Item;
173+
}
174+
175+
function f50<T extends ItemMap>(obj: T, key: keyof T) {
176+
let item: Item = obj[key];
177+
return obj[key].name;
178+
}
179+
180+
function f51<T extends ItemMap, K extends keyof T>(obj: T, key: K) {
181+
let item: Item = obj[key];
182+
return obj[key].name;
165183
}

tests/baselines/reference/mappedTypeRelationships.js

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,24 @@ function f40<T>(x: T, y: Readonly<T>) {
8686
function 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;
180206
declare function f31<T>(x: T, y: Partial<T>): void;
181207
declare function f40<T>(x: T, y: Readonly<T>): void;
182208
declare 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;

tests/cases/conformance/types/mapped/mappedTypeRelationships.ts

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,4 +87,22 @@ function f40<T>(x: T, y: Readonly<T>) {
8787
function f41<T>(x: T, y: Readonly<T>) {
8888
x = y;
8989
y = x;
90+
}
91+
92+
type Item = {
93+
name: string;
94+
}
95+
96+
type ItemMap = {
97+
[x: string]: Item;
98+
}
99+
100+
function f50<T extends ItemMap>(obj: T, key: keyof T) {
101+
let item: Item = obj[key];
102+
return obj[key].name;
103+
}
104+
105+
function f51<T extends ItemMap, K extends keyof T>(obj: T, key: K) {
106+
let item: Item = obj[key];
107+
return obj[key].name;
90108
}

0 commit comments

Comments
 (0)