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);
|
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` 断言)----
|
// ---- Block 字段值类型守卫(用于 select onChange 等场景,替代 `as` 断言)----
|
||||||
|
|
||||||
const BLACKBOARD_LAYOUTS = ["structure", "mindmap", "text"] as const;
|
const BLACKBOARD_LAYOUTS = ["structure", "mindmap", "text"] as const;
|
||||||
@@ -244,6 +256,7 @@ const VALID_BLOCK_TYPES: BlockType[] = [
|
|||||||
"exercise",
|
"exercise",
|
||||||
"rich_text",
|
"rich_text",
|
||||||
"reflection",
|
"reflection",
|
||||||
|
"interaction",
|
||||||
];
|
];
|
||||||
export function isBlockType(v: string): v is BlockType {
|
export function isBlockType(v: string): v is BlockType {
|
||||||
return (VALID_BLOCK_TYPES as readonly string[]).includes(v);
|
return (VALID_BLOCK_TYPES as readonly string[]).includes(v);
|
||||||
|
|||||||
Reference in New Issue
Block a user