打字稿检查基础 class
Typescript check for base class
我需要在下面的对象中将 class 传递给 handler
:
import { S01Handler } from "./handlers/start/S01Handler"
const config: ConfigInterface = {
states: {
[StateEnum.S01]: {
objects: [
BackgroundObject.NAME,
LeavesObject.NAME,
],
handler: S01Handler,
},
},
}
S01Handler
扩展了抽象基础 class BaseHandler
。例如说 export abstract class BaseClass {}
我想在处理程序条目中对 BaseClass
进行类型检查。
我当前的 ConfigInterface
不兼容检查 class 类型。
type StateEnum = import("./StateEnum").StateEnum
type BaseHandler = import("../handlers/BaseHandler").BaseHandler
type ObjectName = string & {readonly '': unique symbol}
interface ConfigInterface
{
states: {
[key in StateEnum]: {
objects: ObjectName[]
handler: BaseHandler // I believe this checks for instance?
}
}
}
我应该如何更改它以实现 handler
类型检查?
我不是 100% 肯定你的问题,但在你的代码中你有评论“我相信这个检查例如?”这里:
interface ConfigInterface
{
states: {
[key in StateEnum]: {
objects: ObjectName[]
handler: BaseHandler // I believe this checks for instance?
}
}
}
该评论是正确的,它寻找 BaseHandler
的 实例 。如果您想查找 BaseHandler
本身(构造函数)或它的子类,那将是 typeof BaseHandler
:
interface ConfigInterface
{
states: {
[key in StateEnum]: {
objects: ObjectName[]
handler: typeof BaseHandler
}
}
}
我需要在下面的对象中将 class 传递给 handler
:
import { S01Handler } from "./handlers/start/S01Handler"
const config: ConfigInterface = {
states: {
[StateEnum.S01]: {
objects: [
BackgroundObject.NAME,
LeavesObject.NAME,
],
handler: S01Handler,
},
},
}
S01Handler
扩展了抽象基础 class BaseHandler
。例如说 export abstract class BaseClass {}
我想在处理程序条目中对 BaseClass
进行类型检查。
我当前的 ConfigInterface
不兼容检查 class 类型。
type StateEnum = import("./StateEnum").StateEnum
type BaseHandler = import("../handlers/BaseHandler").BaseHandler
type ObjectName = string & {readonly '': unique symbol}
interface ConfigInterface
{
states: {
[key in StateEnum]: {
objects: ObjectName[]
handler: BaseHandler // I believe this checks for instance?
}
}
}
我应该如何更改它以实现 handler
类型检查?
我不是 100% 肯定你的问题,但在你的代码中你有评论“我相信这个检查例如?”这里:
interface ConfigInterface
{
states: {
[key in StateEnum]: {
objects: ObjectName[]
handler: BaseHandler // I believe this checks for instance?
}
}
}
该评论是正确的,它寻找 BaseHandler
的 实例 。如果您想查找 BaseHandler
本身(构造函数)或它的子类,那将是 typeof BaseHandler
:
interface ConfigInterface
{
states: {
[key in StateEnum]: {
objects: ObjectName[]
handler: typeof BaseHandler
}
}
}