Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

TypeScript: augmenting built-in types

Tags:

typescript

how does one augment one of the 'built-in' types? eg Array?

In JS, I'd do something like

Array.prototype.shuffle = function () { ... };

what's the equivalent in TypeScript?

like image 444
Spongman Avatar asked Oct 03 '12 04:10

Spongman


1 Answers

Types are 'open ended' in TypeScript, so you can just write:

interface Array {
  shuffle: () => any; // <-- Whatever signature you want.
}

And then the type is expanded to include the new function (and you can assign a function matching the signature to it).

Note however that extending the built-in types (those in lib.d.ts - such as Array) has an issue currently in the language service, as it caches those internally for perf reasons. Do the workaround I wrote-up at http://typescript.codeplex.com/workitem/4 to extend the built-in types without errors in the language service in VS.

like image 135
Bill Ticehurst Avatar answered Oct 31 '22 02:10

Bill Ticehurst