interface ICommandHandler<T> {
type: string // how to ensure string == T.name ?
handle(command: T): void;
}
interface ICommand {}
class CreateTaskCommand implements ICommand{}
class CreateTaskCommandHandler implements ICommandHandler<CreateTaskCommand> {
type = "CreateTaskCommanD" // typo
handle(command: CreateTaskCommand) {}
}
我的目标是确保type
中的CreateTaskCommand
属性等于CreateTaskCommandHandler
字符串。
我之前的示例没有引发打字错误。
答案 0 :(得分:0)
也许您应该尝试在命令中使用静态属性。
即使您有错字,它仍然可以使用。
interface ICommandHandler<T> {
canHandle(command:T): boolean;
handle(command: T): void;
}
interface ICommand {
type: string;
}
class CreateTaskCommand implements ICommand{
static commandName: string = 'CreateTaskCommand'
type = CreateTaskCommand.commandName;
}
class CreateTaskCommandHandler implements ICommandHandler<CreateTaskCommand> {
canHandle(command: CreateTaskCommand): boolean {
return command.type === CreateTaskCommand.commandName;
}
handle(command: CreateTaskCommand) {}
}