TypeScript: расширение встроенных типов

как увеличить один из "встроенных" типов? например, массив?

В JS я бы сделал что-то вроде

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

что эквивалентно в TypeScript?

Ответ 1

Типы "открытые" в TypeScript, поэтому вы можете просто написать:

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

И затем тип расширяется, чтобы включить новую функцию (и вы можете назначить ей функцию, соответствующую сигнатуре).

Обратите внимание, однако, что расширение встроенных типов (в lib.d.ts - например, Array) имеет проблему в настоящее время в языковой службе, поскольку она кэширует их внутренне по первичным причинам. Сделайте обходной путь, который я написал в http://typescript.codeplex.com/workitem/4, чтобы расширить встроенные типы без ошибок в службе языка в VS.