32 lines
666 B
TypeScript
32 lines
666 B
TypeScript
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;
|
|
}
|