Skip to content

Commit dafea7f

Browse files
committed
Add tests
1 parent bf72587 commit dafea7f

File tree

1 file changed

+63
-1
lines changed

1 file changed

+63
-1
lines changed

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

Lines changed: 63 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,4 +105,66 @@ function f50<T extends ItemMap>(obj: T, key: keyof T) {
105105
function f51<T extends ItemMap, K extends keyof T>(obj: T, key: K) {
106106
let item: Item = obj[key];
107107
return obj[key].name;
108-
}
108+
}
109+
110+
type T1<T> = {
111+
[P in keyof T]: T[P];
112+
}
113+
114+
type T2<T> = {
115+
[P in keyof T]: T[P];
116+
}
117+
118+
function f60<U>(x: T1<U>, y: T2<U>) {
119+
x = y;
120+
y = x;
121+
}
122+
123+
type Identity<T> = {
124+
[P in keyof T]: T[P];
125+
}
126+
127+
function f61<U>(x: Identity<U>, y: Partial<U>) {
128+
x = y; // Error
129+
y = x;
130+
}
131+
132+
function f62<U>(x: Identity<U>, y: Readonly<U>) {
133+
x = y;
134+
y = x;
135+
}
136+
137+
function f70<T>(x: { [P in keyof T]: T[P] }, y: { [P in keyof T]: T[P] }) {
138+
x = y;
139+
y = x;
140+
}
141+
142+
function f71<T, U extends T>(x: { [P in keyof T]: T[P] }, y: { [P in keyof T]: U[P] }) {
143+
x = y;
144+
y = x; // Error
145+
}
146+
147+
function f72<T, U extends T>(x: { [P in keyof T]: T[P] }, y: { [P in keyof U]: U[P] }) {
148+
x = y;
149+
y = x; // Error
150+
}
151+
152+
function f73<T, K extends keyof T>(x: { [P in K]: T[P] }, y: { [P in keyof T]: T[P] }) {
153+
x = y;
154+
y = x; // Error
155+
}
156+
157+
function f74<T, U extends T, K extends keyof T>(x: { [P in K]: T[P] }, y: { [P in keyof U]: U[P] }) {
158+
x = y;
159+
y = x; // Error
160+
}
161+
162+
function f75<T, U extends T, K extends keyof T>(x: { [P in K]: T[P] }, y: { [P in keyof T]: U[P] }) {
163+
x = y;
164+
y = x; // Error
165+
}
166+
167+
function f76<T, U extends T, K extends keyof T>(x: { [P in K]: T[P] }, y: { [P in K]: U[P] }) {
168+
x = y;
169+
y = x; // Error
170+
}

0 commit comments

Comments
 (0)