Typescript 有没有一种方法可以在使用映射类型的同时将方法保留为实例方法而不是属性?

Typescript 有没有一种方法可以在使用映射类型的同时将方法保留为实例方法而不是属性?,typescript,mapped-types,Typescript,Mapped Types,您正处于一个相当棘手的领域。您可能可以尝试向编译器团队提交一个bug。似乎B['x']有时被视为一种方法。例如,它表示参数协方差,而不是反方差。(请参阅)如果您调查(新b).x,它会说这是一种方法,但如果您调查b,它看起来像一个属性。您不必提交问题;有一个现有的:。如果你想看到这种情况发生,你可能想给它一个机会 interface A { x(): any } // this is the same as Pick<A, keyof A> type B = {[K in key

您正处于一个相当棘手的领域。您可能可以尝试向编译器团队提交一个bug。似乎
B['x']
有时被视为一种方法。例如,它表示参数协方差,而不是反方差。(请参阅)如果您调查
(新b).x,它会说这是一种方法,但如果您调查
b,它看起来像一个属性。您不必提交问题;有一个现有的:。如果你想看到这种情况发生,你可能想给它一个机会
interface A {
  x(): any
}

// this is the same as Pick<A, keyof A>
type B = {[K in keyof A]: A[K]}
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() {}
//~
}