File: objectAssignLikeNonUnionResult.ts

package info (click to toggle)
node-typescript 4.9.5%2Bds1-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 533,908 kB
  • sloc: javascript: 2,018,330; makefile: 7; sh: 1
file content (18 lines) | stat: -rw-r--r-- 583 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
interface Interface {
    field: number;
}
const defaultValue: Interface = { field: 1 };

declare function assign<T, U>(target: T, source: U): T & U;

// Displayed type: Interface & { field: number }
// Underlying type: Something else...
const data1 = assign(defaultValue, Date.now() > 3 ? { field: 2 } : {});

type ExtractRawComponent<T> = T extends { __raw: infer C } ? [L1: T, L2: C] : [R1: T];
type t1 = ExtractRawComponent<typeof data1>;

// ???
type Explode<T> = T extends { x: infer A } ? [A] : 'X';
// 'X' | [unknown] -- why?
type e1 = Explode<typeof data1>;