interface SerializableClass { new (...a:any[]): any; readonly className: string; } interface Serialised { className: T['className']; // error value: InstanceType; } class Ok { static readonly className = "Ok" } let o: Serialised = { className: "Ok", value: new Ok() } let o2: Serialised = { className: "Okk", //err value: new Ok() } class Bad{} let o3: Serialised //err Type 'typeof Bad' does not satisfy the constraint 'SerializableClass'.