feat(lesson-preparation): isInteractionBlockData 类型守卫

This commit is contained in:
SpecialX
2026-07-04 11:12:33 +08:00
parent 217b5b48e4
commit 8a7d0f69ca

View File

@@ -156,6 +156,18 @@ export function isReflectionBlockData(data: BlockData): data is ReflectionBlockD
return isObject(data) && Array.isArray(data.reflection);
}
export function isInteractionBlockData(
data: unknown,
): data is import("../types").InteractionBlockData {
if (typeof data !== "object" || data === null) return false;
const d = data as Record<string, unknown>;
return (
typeof d.designIntent === "string" &&
Array.isArray(d.turns) &&
Array.isArray(d.knowledgePointIds)
);
}
// ---- Block 字段值类型守卫(用于 select onChange 等场景,替代 `as` 断言)----
const BLACKBOARD_LAYOUTS = ["structure", "mindmap", "text"] as const;
@@ -244,6 +256,7 @@ const VALID_BLOCK_TYPES: BlockType[] = [
"exercise",
"rich_text",
"reflection",
"interaction",
];
export function isBlockType(v: string): v is BlockType {
return (VALID_BLOCK_TYPES as readonly string[]).includes(v);