=== tests/cases/conformance/es6/templates/taggedTemplatesWithTypeArguments2.ts === export interface SomethingTaggable { (t: TemplateStringsArray, ...args: T[]): SomethingNewable; >t : TemplateStringsArray >args : T[] } export interface SomethingNewable { new (...args: T[]): any; >args : T[] } declare const tag: SomethingTaggable; >tag : SomethingTaggable const a = new tag `${100} ${200}`("hello", "world"); >a : any >new tag `${100} ${200}`("hello", "world") : any >tag `${100} ${200}` : SomethingNewable >tag : SomethingTaggable >`${100} ${200}` : string >100 : 100 >200 : 200 >"hello" : "hello" >"world" : "world" const b = new tag `${"hello"} ${"world"}`(100, 200); >b : any >new tag `${"hello"} ${"world"}`(100, 200) : any >tag `${"hello"} ${"world"}` : SomethingNewable >tag : SomethingTaggable >`${"hello"} ${"world"}` : string >"hello" : "hello" >"world" : "world" >100 : 100 >200 : 200 const c = new tag `${100} ${200}`("hello", "world"); >c : any >new tag `${100} ${200}`("hello", "world") : any >new tag `${100} ${200}` : any >tag `${100} ${200}` : SomethingNewable >tag : SomethingTaggable >`${100} ${200}` : string >100 : 100 >200 : 200 >"hello" : "hello" >"world" : "world" const d = new tag `${"hello"} ${"world"}`(100, 200); >d : any >new tag `${"hello"} ${"world"}`(100, 200) : any >new tag `${"hello"} ${"world"}` : any >tag `${"hello"} ${"world"}` : SomethingNewable >tag : SomethingTaggable >`${"hello"} ${"world"}` : string >"hello" : "hello" >"world" : "world" >100 : 100 >200 : 200 /** * Testing ASI. This should never parse as * * ```ts * new tag; * `hello${369}`(); * ``` */ const e = new tag >e : any >new tag`hello`() : any >tag`hello` : SomethingNewable >tag : SomethingTaggable `hello`(); >`hello` : "hello" class SomeBase { >SomeBase : SomeBase a!: A; b!: B; c!: C; >a : A >b : B >c : C } class SomeDerived extends SomeBase { >SomeDerived : SomeDerived >SomeBase : SomeBase constructor() { super `hello world`; >super `hello world` : any >super : any >super : SomeBase > : any >`hello world` : "hello world" } }