=== tests/cases/compiler/server.ts === export interface I { >I : I, Symbol(I, Decl(server.ts, 0, 0)) prop: string; >prop : string, Symbol(prop, Decl(server.ts, 1, 20)) } export interface I2 { >I2 : I2, Symbol(I2, Decl(server.ts, 3, 1)) prop2: string; >prop2 : string, Symbol(prop2, Decl(server.ts, 4, 21)) } export class C implements I { >C : C, Symbol(C, Decl(server.ts, 6, 1)) >I : I, Symbol(I, Decl(server.ts, 0, 0)) prop = "hello"; >prop : string, Symbol(prop, Decl(server.ts, 7, 29)) >"hello" : string } export class C2 implements I2 { >C2 : C2, Symbol(C2, Decl(server.ts, 9, 1)) >I2 : I2, Symbol(I2, Decl(server.ts, 3, 1)) prop2 = "world"; >prop2 : string, Symbol(prop2, Decl(server.ts, 10, 31)) >"world" : string } === tests/cases/compiler/client.ts === import { C, I, C2 } from "server"; // Shouldnt emit I and C2 into the js file and emit C and I in .d.ts file >C : typeof C, Symbol(C, Decl(client.ts, 0, 8)) >I : any, Symbol(I, Decl(client.ts, 0, 11)) >C2 : typeof C2, Symbol(C2, Decl(client.ts, 0, 14)) export type cValInterface = I; >cValInterface : I, Symbol(cValInterface, Decl(client.ts, 0, 34)) >I : I, Symbol(I, Decl(client.ts, 0, 11)) export var cVal = new C(); >cVal : C, Symbol(cVal, Decl(client.ts, 2, 10)) >new C() : C >C : typeof C, Symbol(C, Decl(client.ts, 0, 8))