Add tests
This commit is contained in:
parent
2376e30410
commit
a789990781
3 changed files with 70 additions and 0 deletions
|
@ -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;
|
||||
}
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
}
|
Loading…
Reference in a new issue