File: identityAndDivergentNormalizedTypes.ts

package info (click to toggle)
node-typescript 5.1.6%2Bds1-1
  • links: PTS, VCS
  • area: main
  • in suites: experimental
  • size: 492,516 kB
  • sloc: javascript: 2,078,951; makefile: 6; sh: 1
file content (35 lines) | stat: -rw-r--r-- 703 bytes parent folder | download
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;
}