//// [genericInterfaceImplementation.ts] interface IOption { get(): A; flatten(): IOption; } class None implements IOption{ get(): T { throw null; } flatten() : IOption { return new None(); } } //// [genericInterfaceImplementation.js] var None = (function () { function None() { } None.prototype.get = function () { throw null; }; None.prototype.flatten = function () { return new None(); }; return None; })();