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() {}
//~
}
Ссылка на игровую площадку