如何在TypeScript中编写泛型类的扩展作为getter函数?
如何在TypeScript中编写泛型类的扩展作为getter函数?
所以我学会了如何在TypeScript中创建扩展:
interface Array{ lastIndex(): number } Array.prototype.lastIndex = function (): number { return this.length - 1 }
但是如何从中创建一个getter?例如:
interface Array{ get lastIndex(): number } Array.prototype.lastIndex = function (): number { return this.length - 1 }
这样我就可以在代码中直接调用someArray.lastIndex作为getter了。
我找到了这个答案,但是代码对于泛型类型无法编译,而且以这种方式编写代码非常丑陋,也许我在TypeScript中要求太多了:如何使用getter扩展TypeScript类?
问题的出现原因:用户想要在TypeScript中为泛型类编写扩展,具体是为一个数组类添加一个获取最后一个元素的getter方法。
解决方法:用户可以使用接口和原型链来为泛型类编写扩展。首先,可以定义一个接口Array
下面是具体的代码示例:
interface Array{ lastIndex(): number; lastValue(): T } Array.prototype.lastIndex = function (): number { return this.length - 1 }; Array.prototype.lastValue = function (): any { return this[this.lastIndex()] }; let myArray = ['111,', '43242asd', 'asdasdas']; console.log(myArray.lastValue());
通过以上代码,用户扩展了数组类,添加了lastIndex和lastValue两个方法,可以在实例化的数组对象上直接调用这两个方法来获取最后一个元素的索引和值。
以上就是用户如何在TypeScript中为泛型类编写扩展的方法。通过接口和原型链的方式,用户可以为任意泛型类添加自定义的方法或属性。