Я успешно реализовал некоторое расширение в машинописи, которое работает, но я хотел бы вернуть этот тип вместо void.
interface Array<T> {
pushAll(other: T[]): void
randomize(): void
}
Array.prototype.pushAll = function <T>(other: T[]): void {
this.push(...other)
}
Array.prototype.randomize = function (): void {
this.sort(() => Math.random() * 2 - 1)
}
Но когда я пытаюсь это сделать, это дает ошибки компиляции:
interface Array<T> {
pushAll(other: T[]): this
randomize(): this
}
Array.prototype.pushAll = function <T>(other: T[]): this {
this.push(...other)
return this
}
Array.prototype.randomize = function (): this {
this.sort(() => Math.random() * 2 - 1)
return this
}
Ошибка: этот тип доступен только в нестатических ....
Также предложение any[]
не работает.
Также я устал объявить тип возвращаемого значения как T[]
, но безуспешно.
Я перехожу к машинописи из языков более высокого уровня, таких как kotlin, swift, c #, target-c, где это вполне возможно, так что я могу писать функции, которые я могу связать, при этом сохраняя безопасность типов.
Благодарю.
(изменить)
Я нашел обходной путь только для этого и некоторых других подобных случаев, возвращая тип Array<T>
. Но я могу определить возвращение этого в интерфейсах и реализовать его, просто в определении функции прототипов это не сработает ..