TypeScript: возвращаемый тип с самообращением для статических методов в наследуемых классах
СПолиморфный это в TypeScript 1.7, как я обнаружилВотмы можем определить метод в классе с типом возвратаthis
и автоматически, любые классы, которые расширяют этот класс и наследуют методы, будут иметь свои возвращаемые типы, соответствующие их соответствующимthis
тип. Вот так:
class Model {
save():this { // return type: Model
// save the current instance and return it
}
}
class SomeModel extends Model {
// inherits the save() method - return type: SomeModel
}
Тем не менее, я хочу иметь наследственноеstatic
метод с возвращаемым типом, ссылающийся на сам класс. Это лучше всего описано в коде:
class Model {
static getAll():Model[] {
// return all recorded instances of Model as an array
}
save():this {
// save the current instance and return it
}
}
class SomeModel extends Model {
// inherits the save() method - return type: SomeModel
// also inherits getAll() - return type: Model (how can we make that SomeModel?)
}
Возможно, мне придется думать о другом способе реализации этого, так как полиморфныйthis
в TypeScript 1.7 не поддерживаетstatic
методыпо дизайну.
РЕДАКТИРОВАТЬ: Я думаю, мы увидим, как эта проблема Github заканчивается:https://github.com/Microsoft/TypeScript/issues/5863