Есть ли способ использовать сопоставленные типы, сохраняя методы методом экземпляра, а не свойством? - PullRequest
2 голосов
/ 27 апреля 2020
interface A {
  x(): any
}

// this is the same as Pick<A, keyof A>
type B = {[K in keyof A]: A[K]}

В приведенном выше примере A равно {x(): any}, а B равно {x: () => any}. Есть ли способ использовать сопоставленные типы, сохраняя x как метод экземпляра, а не как свойство?


Я хочу, чтобы это был метод из-за таких вещей:

declare const a: new () => A
declare const b: new () => B

class C extends a {
  // no error
  x() {}
}

class D extends b {
  // Class 'B' defines instance member property 'x',
  // but extended class 'D' defines it as instance member function.
  x() {}
//~
}

Ссылка на игровую площадку

...