File: spreadMethods.errors.txt

package info (click to toggle)
node-typescript 4.9.5%2Bds1-2
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 533,908 kB
  • sloc: javascript: 2,018,330; makefile: 7; sh: 1
file content (56 lines) | stat: -rw-r--r-- 1,742 bytes parent folder | download | duplicates (5)
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
tests/cases/conformance/types/spread/spreadMethods.ts(16,4): error TS2339: Property 'm' does not exist on type '{ p: number; }'.
tests/cases/conformance/types/spread/spreadMethods.ts(17,4): error TS2339: Property 'g' does not exist on type '{ p: number; }'.
tests/cases/conformance/types/spread/spreadMethods.ts(19,5): error TS2339: Property 'm' does not exist on type '{ p: number; }'.
tests/cases/conformance/types/spread/spreadMethods.ts(20,5): error TS2339: Property 'g' does not exist on type '{ p: number; }'.


==== tests/cases/conformance/types/spread/spreadMethods.ts (4 errors) ====
    class K {
        p = 12;
        m() { }
        get g() { return 0; }
    }
    interface I {
        p: number;
        m(): void;
        readonly g: number;
    }
    
    let k = new K()
    let sk = { ...k };
    let ssk = { ...k, ...k };
    sk.p;
    sk.m(); // error
       ~
!!! error TS2339: Property 'm' does not exist on type '{ p: number; }'.
    sk.g; // error
       ~
!!! error TS2339: Property 'g' does not exist on type '{ p: number; }'.
    ssk.p;
    ssk.m(); // error
        ~
!!! error TS2339: Property 'm' does not exist on type '{ p: number; }'.
    ssk.g; // error
        ~
!!! error TS2339: Property 'g' does not exist on type '{ p: number; }'.
    
    let i: I = { p: 12, m() { }, get g() { return 0; } };
    let si = { ...i };
    let ssi = { ...i, ...i };
    si.p;
    si.m(); // ok
    si.g; // ok
    ssi.p;
    ssi.m(); // ok
    ssi.g; // ok
    
    let o = { p: 12, m() { }, get g() { return 0; } };
    let so = { ...o };
    let sso = { ...o, ...o };
    so.p;
    so.m(); // ok
    so.g; // ok
    sso.p;
    sso.m(); // ok
    sso.g; // ok