feat(lesson-preparation): isInteractionBlockData 类型守卫
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user