File: stringIndexerConstrainsPropertyDeclarations2.types

package info (click to toggle)
node-typescript 5.0.4%2Bds1-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 459,140 kB
  • sloc: javascript: 1,972,754; makefile: 6; sh: 1
file content (90 lines) | stat: -rw-r--r-- 1,249 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
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
84
85
86
87
88
89
90
=== tests/cases/conformance/types/objectTypeLiteral/indexSignatures/stringIndexerConstrainsPropertyDeclarations2.ts ===
// String indexer providing a constraint of a user defined type

class A {
>A : A

    foo(): string { return ''; }
>foo : () => string
>'' : ""
}

class B extends A {
>B : B
>A : A

    bar(): string { return ''; }
>bar : () => string
>'' : ""
}

class Foo {
>Foo : Foo

    [x: string]: A;
>x : string

    a: A; // ok
>a : A

    b: B; // ok
>b : B

    c: number; // error
>c : number

    d: string; // error
>d : string
}

interface Foo2 {
    [x: string]: A;
>x : string

    a: A; // ok
>a : A

    b: B; // ok
>b : B

    c: number; // error
>c : number

    d: string; // error
>d : string
}

var a: {
>a : { [x: string]: A; a: A; b: B; c: number; d: string; }

    [x: string]: A;
>x : string

    a: A; // ok
>a : A

    b: B; // ok
>b : B

    c: number; // error
>c : number

    d: string; // error
>d : string

};

// error
var b: { [x: string]: A } = {
>b : { [x: string]: A; }
>x : string
>{    a: A,    b: B} : { a: typeof A; b: typeof B; }

    a: A,
>a : typeof A
>A : typeof A

    b: B
>b : typeof B
>B : typeof B
}