|
| 1 | +=== tests/cases/compiler/wrapClass.ts === |
| 2 | +export function wrapClass(param: any) { |
| 3 | +>wrapClass : Symbol(wrapClass, Decl(wrapClass.ts, 0, 0)) |
| 4 | +>param : Symbol(param, Decl(wrapClass.ts, 0, 26)) |
| 5 | + |
| 6 | + return class Wrapped { |
| 7 | +>Wrapped : Symbol(Wrapped, Decl(wrapClass.ts, 1, 10)) |
| 8 | + |
| 9 | + foo() { |
| 10 | +>foo : Symbol(Wrapped.foo, Decl(wrapClass.ts, 1, 26)) |
| 11 | + |
| 12 | + return param; |
| 13 | +>param : Symbol(param, Decl(wrapClass.ts, 0, 26)) |
| 14 | + } |
| 15 | + } |
| 16 | +} |
| 17 | + |
| 18 | +export type Constructor<T = {}> = new (...args: any[]) => T; |
| 19 | +>Constructor : Symbol(Constructor, Decl(wrapClass.ts, 6, 1)) |
| 20 | +>T : Symbol(T, Decl(wrapClass.ts, 8, 24)) |
| 21 | +>args : Symbol(args, Decl(wrapClass.ts, 8, 39)) |
| 22 | +>T : Symbol(T, Decl(wrapClass.ts, 8, 24)) |
| 23 | + |
| 24 | +export function Timestamped<TBase extends Constructor>(Base: TBase) { |
| 25 | +>Timestamped : Symbol(Timestamped, Decl(wrapClass.ts, 8, 60)) |
| 26 | +>TBase : Symbol(TBase, Decl(wrapClass.ts, 10, 28)) |
| 27 | +>Constructor : Symbol(Constructor, Decl(wrapClass.ts, 6, 1)) |
| 28 | +>Base : Symbol(Base, Decl(wrapClass.ts, 10, 55)) |
| 29 | +>TBase : Symbol(TBase, Decl(wrapClass.ts, 10, 28)) |
| 30 | + |
| 31 | + return class extends Base { |
| 32 | +>Base : Symbol(Base, Decl(wrapClass.ts, 10, 55)) |
| 33 | + |
| 34 | + timestamp = Date.now(); |
| 35 | +>timestamp : Symbol((Anonymous class).timestamp, Decl(wrapClass.ts, 11, 31)) |
| 36 | +>Date.now : Symbol(DateConstructor.now, Decl(lib.es5.d.ts, --, --)) |
| 37 | +>Date : Symbol(Date, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.scripthost.d.ts, --, --)) |
| 38 | +>now : Symbol(DateConstructor.now, Decl(lib.es5.d.ts, --, --)) |
| 39 | + |
| 40 | + }; |
| 41 | +} |
| 42 | + |
| 43 | +=== tests/cases/compiler/index.ts === |
| 44 | +import { wrapClass, Timestamped } from "./wrapClass"; |
| 45 | +>wrapClass : Symbol(wrapClass, Decl(index.ts, 0, 8)) |
| 46 | +>Timestamped : Symbol(Timestamped, Decl(index.ts, 0, 19)) |
| 47 | + |
| 48 | +export default wrapClass(0); |
| 49 | +>wrapClass : Symbol(wrapClass, Decl(index.ts, 0, 8)) |
| 50 | + |
| 51 | +// Simple class |
| 52 | +export class User { |
| 53 | +>User : Symbol(User, Decl(index.ts, 2, 28)) |
| 54 | + |
| 55 | + name = ''; |
| 56 | +>name : Symbol(User.name, Decl(index.ts, 5, 19)) |
| 57 | +} |
| 58 | + |
| 59 | +// User that is Timestamped |
| 60 | +export class TimestampedUser extends Timestamped(User) { |
| 61 | +>TimestampedUser : Symbol(TimestampedUser, Decl(index.ts, 7, 1)) |
| 62 | +>Timestamped : Symbol(Timestamped, Decl(index.ts, 0, 19)) |
| 63 | +>User : Symbol(User, Decl(index.ts, 2, 28)) |
| 64 | + |
| 65 | + constructor() { |
| 66 | + super(); |
| 67 | + } |
| 68 | +} |
0 commit comments