File: typeParamExtendsOtherTypeParam.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 (77 lines) | stat: -rw-r--r-- 1,537 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
=== tests/cases/compiler/typeParamExtendsOtherTypeParam.ts ===
class A<T, U extends T> { }
>A : A<T, U>

class B<T extends Object, U extends T> {
>B : B<T, U>

    data: A<Object, Object>;
>data : A<Object, Object>
}

// Below 2 should compile without error 
var x: A< { a: string }, { a: string; b: number }>;
>x : A<{ a: string; }, { a: string; b: number; }>
>a : string
>a : string
>b : number

var y: B< { a: string }, { a: string; b: number }>;
>y : B<{ a: string; }, { a: string; b: number; }>
>a : string
>a : string
>b : number


// Below should be in error
var x1: A<{ a: string;}, { b: string }>;
>x1 : A<{ a: string; }, { b: string; }>
>a : string
>b : string

var x2: A<{ a: string;}, { a: number }>;
>x2 : A<{ a: string; }, { a: number; }>
>a : string
>a : number

var x3: B<{ a: string;}, { b: string }>;
>x3 : B<{ a: string; }, { b: string; }>
>a : string
>b : string

var x4: B<{ a: string;}, { a: number }>;
>x4 : B<{ a: string; }, { a: number; }>
>a : string
>a : number

var x5: A<{ a: string; b: number }, { a: string }>;
>x5 : A<{ a: string; b: number; }, { a: string; }>
>a : string
>b : number
>a : string

var x6: B<{ a: string; b: number }, { a: string }>;
>x6 : B<{ a: string; b: number; }, { a: string; }>
>a : string
>b : number
>a : string

interface I1 {
    a: string;
>a : string
}

interface I2 {
    a: string;
>a : string

    b: number;
>b : number
}

var x7: A<I2, I1>;
>x7 : A<I2, I1>

var x8: B<I2, I1>;
>x8 : B<I2, I1>