feat(framework): add generic types to GameHostScene
Update GameHostScene to support generic types for TResult and TModule, allowing better type safety when interacting with the game host and its modules.
This commit is contained in:
@@ -1,17 +1,23 @@
|
||||
import { ReactiveScene } from "./ReactiveScene";
|
||||
|
||||
import type { GameHost } from "boardgame-core";
|
||||
import type { GameHost, GameModule } from "boardgame-core";
|
||||
|
||||
export interface GameHostSceneOptions<TState extends Record<string, unknown>> {
|
||||
gameHost: GameHost<TState>;
|
||||
export interface GameHostSceneOptions<
|
||||
TState extends Record<string, unknown>,
|
||||
TResult,
|
||||
TModule extends GameModule<TState, TResult>,
|
||||
> {
|
||||
gameHost: GameHost<TState, TResult, TModule>;
|
||||
[key: string]: unknown;
|
||||
}
|
||||
|
||||
export abstract class GameHostScene<
|
||||
TState extends Record<string, unknown>,
|
||||
> extends ReactiveScene<GameHostSceneOptions<TState>> {
|
||||
public get gameHost(): GameHost<TState> {
|
||||
const gameHost = this.initData.gameHost as GameHost<TState>;
|
||||
TResult,
|
||||
TModule extends GameModule<TState, TResult>,
|
||||
> extends ReactiveScene<GameHostSceneOptions<TState, TResult, TModule>> {
|
||||
public get gameHost(): GameHost<TState, TResult, TModule> {
|
||||
const gameHost = this.initData.gameHost;
|
||||
if (!gameHost) {
|
||||
throw new Error(
|
||||
`GameHostScene (${this.scene.key}): gameHost 未提供。` +
|
||||
|
||||
Reference in New Issue
Block a user