1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
|
// @strict: true
// @noEmit: true
// Repros from #53998
type ApiPost =
| {
path: "/login";
body: {};
}
| {
path: "/user";
body: { name: string; };
}
type PostPath = ApiPost["path"];
type PostBody<PATH extends PostPath> = Extract<ApiPost, { path: PATH }>["body"];
const post = <PATH extends PostPath>(
path: PATH,
{body, ...options}: Omit<RequestInit, 'body'> & {body: PostBody<PATH>}
) => {
}
const tmp = <PATH extends PostPath>(
path: PATH,
body: PostBody<PATH>
) => {
post<PATH>(path, { body })
}
function fx1<P extends PostPath>(x: { body: PostBody<P> }, y: { body: PostBody<P> }) {
x = y;
}
|