打字稿检查基础 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
        }
    }
}