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
|
=== tests/cases/compiler/recursiveTypes1.ts ===
interface Entity<T extends Entity<T>> {
>Entity : Symbol(Entity, Decl(recursiveTypes1.ts, 0, 0))
>T : Symbol(T, Decl(recursiveTypes1.ts, 0, 17))
>Entity : Symbol(Entity, Decl(recursiveTypes1.ts, 0, 0))
>T : Symbol(T, Decl(recursiveTypes1.ts, 0, 17))
X: T;
>X : Symbol(Entity.X, Decl(recursiveTypes1.ts, 0, 39))
>T : Symbol(T, Decl(recursiveTypes1.ts, 0, 17))
Y: T;
>Y : Symbol(Entity.Y, Decl(recursiveTypes1.ts, 1, 8))
>T : Symbol(T, Decl(recursiveTypes1.ts, 0, 17))
}
interface Person<U extends Person<U>> extends Entity<U> {
>Person : Symbol(Person, Decl(recursiveTypes1.ts, 3, 1))
>U : Symbol(U, Decl(recursiveTypes1.ts, 5, 17))
>Person : Symbol(Person, Decl(recursiveTypes1.ts, 3, 1))
>U : Symbol(U, Decl(recursiveTypes1.ts, 5, 17))
>Entity : Symbol(Entity, Decl(recursiveTypes1.ts, 0, 0))
>U : Symbol(U, Decl(recursiveTypes1.ts, 5, 17))
n: number;
>n : Symbol(Person.n, Decl(recursiveTypes1.ts, 5, 57))
}
interface Customer extends Person<Customer> {
>Customer : Symbol(Customer, Decl(recursiveTypes1.ts, 7, 1))
>Person : Symbol(Person, Decl(recursiveTypes1.ts, 3, 1))
>Customer : Symbol(Customer, Decl(recursiveTypes1.ts, 7, 1))
s: string;
>s : Symbol(Customer.s, Decl(recursiveTypes1.ts, 9, 45))
}
|