【发布时间】:2017-04-25 21:11:30
【问题描述】:
Kotlin 有一个名为 Extensions 的功能,它允许您“扩展”任何类型(包括内置类型)而无需实际扩展它。
例如:
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
我想知道是否可以在 TypeScript 中做同样的事情,或者是否有计划在未来支持它?
【问题讨论】:
-
我猜它不在计划中,它似乎与 JavaScript 偏差太大。 TypeScript 应该与 JavaScript 保持相对接近,希望 JavaScript 在未来能够采用它的特性。我认为你的问题应该是:JavaScript 会提供这个吗?
标签: typescript