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)
我正在用代码对数据结构建模以创建 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)