From a41746bd6c956442fef2d443a8f2bc210d0d5322 Mon Sep 17 00:00:00 2001 From: Anders Hejlsberg Date: Fri, 18 Nov 2016 13:31:10 -0800 Subject: [PATCH] Add tests --- .../mappedTypeRelationships.errors.txt | 18 ++++++++++ .../reference/mappedTypeRelationships.js | 34 +++++++++++++++++++ .../types/mapped/mappedTypeRelationships.ts | 18 ++++++++++ 3 files changed, 70 insertions(+) diff --git a/tests/baselines/reference/mappedTypeRelationships.errors.txt b/tests/baselines/reference/mappedTypeRelationships.errors.txt index adafbc5f3a7..e8e0371ed9a 100644 --- a/tests/baselines/reference/mappedTypeRelationships.errors.txt +++ b/tests/baselines/reference/mappedTypeRelationships.errors.txt @@ -162,4 +162,22 @@ tests/cases/conformance/types/mapped/mappedTypeRelationships.ts(76,5): error TS2 function f41(x: T, y: Readonly) { x = y; y = x; + } + + type Item = { + name: string; + } + + type ItemMap = { + [x: string]: Item; + } + + function f50(obj: T, key: keyof T) { + let item: Item = obj[key]; + return obj[key].name; + } + + function f51(obj: T, key: K) { + let item: Item = obj[key]; + return obj[key].name; } \ No newline at end of file diff --git a/tests/baselines/reference/mappedTypeRelationships.js b/tests/baselines/reference/mappedTypeRelationships.js index fcad6973ab7..a81ff973da8 100644 --- a/tests/baselines/reference/mappedTypeRelationships.js +++ b/tests/baselines/reference/mappedTypeRelationships.js @@ -86,6 +86,24 @@ function f40(x: T, y: Readonly) { function f41(x: T, y: Readonly) { x = y; y = x; +} + +type Item = { + name: string; +} + +type ItemMap = { + [x: string]: Item; +} + +function f50(obj: T, key: keyof T) { + let item: Item = obj[key]; + return obj[key].name; +} + +function f51(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(x: T, y: Partial): void; declare function f31(x: T, y: Partial): void; declare function f40(x: T, y: Readonly): void; declare function f41(x: T, y: Readonly): void; +declare type Item = { + name: string; +}; +declare type ItemMap = { + [x: string]: Item; +}; +declare function f50(obj: T, key: keyof T): string; +declare function f51(obj: T, key: K): string; diff --git a/tests/cases/conformance/types/mapped/mappedTypeRelationships.ts b/tests/cases/conformance/types/mapped/mappedTypeRelationships.ts index 7bc1c1a1670..4af71fbea08 100644 --- a/tests/cases/conformance/types/mapped/mappedTypeRelationships.ts +++ b/tests/cases/conformance/types/mapped/mappedTypeRelationships.ts @@ -87,4 +87,22 @@ function f40(x: T, y: Readonly) { function f41(x: T, y: Readonly) { x = y; y = x; +} + +type Item = { + name: string; +} + +type ItemMap = { + [x: string]: Item; +} + +function f50(obj: T, key: keyof T) { + let item: Item = obj[key]; + return obj[key].name; +} + +function f51(obj: T, key: K) { + let item: Item = obj[key]; + return obj[key].name; } \ No newline at end of file