Add tests

This commit is contained in:
Anders Hejlsberg 2016-11-18 13:31:10 -08:00
parent 2376e30410
commit a789990781
3 changed files with 70 additions and 0 deletions

View file

@ -162,4 +162,22 @@ tests/cases/conformance/types/mapped/mappedTypeRelationships.ts(76,5): error TS2
function f41<T>(x: T, y: Readonly<T>) {
x = y;
y = x;
}
type Item = {
name: string;
}
type ItemMap = {
[x: string]: Item;
}
function f50<T extends ItemMap>(obj: T, key: keyof T) {
let item: Item = obj[key];
return obj[key].name;
}
function f51<T extends ItemMap, K extends keyof T>(obj: T, key: K) {
let item: Item = obj[key];
return obj[key].name;
}

View file

@ -86,6 +86,24 @@ function f40<T>(x: T, y: Readonly<T>) {
function f41<T>(x: T, y: Readonly<T>) {
x = y;
y = x;
}
type Item = {
name: string;
}
type ItemMap = {
[x: string]: Item;
}
function f50<T extends ItemMap>(obj: T, key: keyof T) {
let item: Item = obj[key];
return obj[key].name;
}
function f51<T extends ItemMap, K extends keyof T>(obj: T, key: K) {
let item: Item = obj[key];
return obj[key].name;
}
//// [mappedTypeRelationships.js]
@ -159,6 +177,14 @@ function f41(x, y) {
x = y;
y = x;
}
function f50(obj, key) {
var item = obj[key];
return obj[key].name;
}
function f51(obj, key) {
var item = obj[key];
return obj[key].name;
}
//// [mappedTypeRelationships.d.ts]
@ -180,3 +206,11 @@ declare function f30<T>(x: T, y: Partial<T>): void;
declare function f31<T>(x: T, y: Partial<T>): void;
declare function f40<T>(x: T, y: Readonly<T>): void;
declare function f41<T>(x: T, y: Readonly<T>): void;
declare type Item = {
name: string;
};
declare type ItemMap = {
[x: string]: Item;
};
declare function f50<T extends ItemMap>(obj: T, key: keyof T): string;
declare function f51<T extends ItemMap, K extends keyof T>(obj: T, key: K): string;

View file

@ -87,4 +87,22 @@ function f40<T>(x: T, y: Readonly<T>) {
function f41<T>(x: T, y: Readonly<T>) {
x = y;
y = x;
}
type Item = {
name: string;
}
type ItemMap = {
[x: string]: Item;
}
function f50<T extends ItemMap>(obj: T, key: keyof T) {
let item: Item = obj[key];
return obj[key].name;
}
function f51<T extends ItemMap, K extends keyof T>(obj: T, key: K) {
let item: Item = obj[key];
return obj[key].name;
}