class 的 Typescript 类型扩展了已知的 class

Typescript type of class which extends a known class

我正在用代码对数据结构建模以创建 SDK。例如,我有两种可用的“字母”“类型”。摘要 class letter 声明 character 属性 将始终存在。

再往下会有一个函数接收 letter 并打印字符。问题是,扩展 letter 的每个 class 都是它自己的类型。这个函数怎么可能接受扩展 letter 的任何 class?

abstract class Letter {
  abstract character: string
}

class A extends Letter {
  character = "A"
}

class B extends Letter {
  character = "B"
}

function printLetter(letter: Letter) {
  console.log(letter.character)
}

printLetter(A) // see error

错误:

Argument of type 'typeof A' is not assignable to parameter of type 'Letter'.
  Property 'character' is missing in type 'typeof A' but required in type 'Letter'.(2345)
abstract class Letter {
  abstract character: string
}

class A extends Letter {
  character = "A"
}

class B extends Letter {
  character = "B"
}

function printLetter(letter: Letter) {
  console.log(letter.character)
}

const aInstance = new A()

printLetter(aInstance)