File: spreadDuplicateExact.js

package info (click to toggle)
node-typescript 5.0.4%2Bds1-1
  • links: PTS, VCS
  • area: main
  • in suites: experimental
  • size: 459,116 kB
  • sloc: javascript: 1,972,754; makefile: 6; sh: 1
file content (83 lines) | stat: -rw-r--r-- 2,337 bytes parent folder | download | duplicates (3)
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
//// [spreadDuplicateExact.ts]
// Repro from #44438

declare let a: { a: string };
declare let b: { a?: string };
declare let c: { a: string | undefined };
declare let d: { a?: string | undefined };

declare let t: boolean;

let a1 = { a: 123, ...a };  // string (Error)
let b1 = { a: 123, ...b };  // string | number
let c1 = { a: 123, ...c };  // string | undefined (Error)
let d1 = { a: 123, ...d };  // string | number | undefined

let a2 = { a: 123, ...(t ? a : {}) };  // string | number
let b2 = { a: 123, ...(t ? b : {}) };  // string | number
let c2 = { a: 123, ...(t ? c : {}) };  // string | number | undefined
let d2 = { a: 123, ...(t ? d : {}) };  // string | number | undefined


//// [spreadDuplicateExact.js]
"use strict";
// Repro from #44438
var __assign = (this && this.__assign) || function () {
    __assign = Object.assign || function(t) {
        for (var s, i = 1, n = arguments.length; i < n; i++) {
            s = arguments[i];
            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
                t[p] = s[p];
        }
        return t;
    };
    return __assign.apply(this, arguments);
};
var a1 = __assign({ a: 123 }, a); // string (Error)
var b1 = __assign({ a: 123 }, b); // string | number
var c1 = __assign({ a: 123 }, c); // string | undefined (Error)
var d1 = __assign({ a: 123 }, d); // string | number | undefined
var a2 = __assign({ a: 123 }, (t ? a : {})); // string | number
var b2 = __assign({ a: 123 }, (t ? b : {})); // string | number
var c2 = __assign({ a: 123 }, (t ? c : {})); // string | number | undefined
var d2 = __assign({ a: 123 }, (t ? d : {})); // string | number | undefined


//// [spreadDuplicateExact.d.ts]
declare let a: {
    a: string;
};
declare let b: {
    a?: string;
};
declare let c: {
    a: string | undefined;
};
declare let d: {
    a?: string | undefined;
};
declare let t: boolean;
declare let a1: {
    a: string;
};
declare let b1: {
    a: string | number;
};
declare let c1: {
    a: string | undefined;
};
declare let d1: {
    a: string | number | undefined;
};
declare let a2: {
    a: string | number;
};
declare let b2: {
    a: string | number;
};
declare let c2: {
    a: string | number | undefined;
};
declare let d2: {
    a: string | number | undefined;
};