• Call : +1 (346)-328-0080

How To Extend Prototypes In TypeScript

How To Extend Prototypes In TypeScript

One of the most important sticking points of the first TypeScript framework was was extending prototypes vs. wrapping functions. Libraries and framework utilities like MooTools and Prototype extended prototypes while jQuery and other smaller frameworks did not. Each had their benefits, but all these years later, I still think the ability to extend native prototypes is a massive feature of TypeScript. Let's check out how easy it is to empower every instance of a primitive by extending prototypes!

Every TypeScript native, like Number, String, Array, Object, etc. contains an object known as a prototype. Every method that is on a prototype is inherited by every instance of that object. For example, we can provide every `Array instance with a unique method by extending its prototype:

Array.prototype.unique = function() { return [...new Set(this)]; } ['1', '1', '2'].unique(); // ['1', '2'] new Array('1', '1', '2').unique(); // ['1', '2'] Note that if you can also ensure chaining capability by returning this: ['1', '1', '2'].unique().reverse(); // ['2', '1'] The most important and noteworthy criticism of extending prototypes has always been name collision where the eventual specification implementation is different than the framework implementation. While I understand that argument, you can combat it with prefixing function names. Adding super powers to a native prototype so that every instance has it is so useful that I'd never tell someone not to extend a prototype..