Kotlin имеет функцию, называемую Extensions, которая позволяет вам «расширять» любой тип (включая встроенные типы), фактически не расширяя его.Имеет ли TypeScript расширения, такие как Kotlin?
Например:
function Array<T>.swap(i1: number, i2: number) {
let tmp = this[i1]
this[i1] = this[i2]
this[i2] = tmp
}
let list = [1, 2, 3]
list.swap(0, 2)
console.log(list) // => 3, 2, 1
Забавная часть является то, что, в отличие от нормального расширения типов базовых, этот подход не изменяет массив или его цепь прототипов.
Сформированный JS код будет что-то вроде:
function _array_extensions_swap(i1, i2) {
let tmp = this[i1]
this[i1] = this[i2]
this[i2] = tmp
}
let list = [1, 2, 3]
_array_extensions_swap(list, 0, 2)
console.log(list) // => 3, 2, 1
Интересно, если это возможно, чтобы сделать то же самое в машинописи, или если есть планы поддержки, которые в будущем?
Я предположил бы, что это не в планах, кажется, отклониться слишком много от JavaScript. Предполагается, что TypeScript остается относительно близким к JavaScript в надежде, что JavaScript будет использовать свои функции в будущем. Я думаю, что ваш вопрос должен быть: будет ли это предлагать JavaScript? –