В файле объявления Typescript как указать, что класс расширяет экземпляр другого класса? - PullRequest
0 голосов
/ 19 февраля 2020

У меня есть ванильный JS проект, который я хотел бы использовать (и в конечном итоге перейти на) машинопись. Я начинаю с написания некоторых файлов объявлений.

Класс javascript, который я пытаюсь создать для расширений экземпляров другого класса, например:

class Parent {}
const ParentInstance = () => class extends Parent {}
const ChildInstance = (InstanceParent) => class extends InstanceParent {}
class Thing {
  constructor () {
    this.ParentInstance = ParentInstance()
    this.Child = ChildInstance(this.ParentInstance)
  }
}

let thing1 = new Thing()
let thing2 = new Thing()
let childOf1 = new thing1.Child()

childOf1 instanceof thing1.Child // true
childOf1 instanceof thing2.Child // false

В результате c является экземпляром Child такой, что его цепочка прототипов строго привязана к конкретному c экземпляру Thing. Как я могу говорить об этом виде наследования прототипов в Typescript?

declare class Thing {
  Child: Child<?instance constructor?>
}

Ссылка на игровую площадку. как определить T здесь?

...