import { isArrayOf, isNumberFinite, isObject, isOptionalOf, isOptionalArrayOf, isString } from 'common/utils'; export interface NodeData { id: number; name: string; description?: string; parentId?: number; covers?: number[]; } export function isNodeData(data: any): data is NodeData { if (!isObject(data)) { return false; } if (!isNumberFinite(data.id)) { return false; } if (!isString(data.name)) { return false; } if (!isOptionalOf(data.description, isString)) { return false; } if (!isOptionalOf(data.parentId, isNumberFinite)) { return false; } if (!isOptionalArrayOf(data.cover, isNumberFinite)) { return false; } return true; }