1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
|
validate(params: Record<string, any>): { valid: boolean; error?: string } { for (const [name, param] of Object.entries(this.metadata.parameters)) { if (param.required && !(name in params)) { return { valid: false, error: `缺少必需参数: ${name}`, }; }
if (name in params) { const value = params[name]; const expectedType = param.type;
if (expectedType === "string" && typeof value !== "string") { return { valid: false, error: `参数 ${name} 应为字符串类型`, }; }
if (expectedType === "number" && typeof value !== "number") { return { valid: false, error: `参数 ${name} 应为数字类型`, }; }
if (expectedType === "boolean" && typeof value !== "boolean") { return { valid: false, error: `参数 ${name} 应为布尔类型`, }; }
if (expectedType === "array" && !Array.isArray(value)) { return { valid: false, error: `参数 ${name} 应为数组类型`, }; }
if (expectedType === "object" && typeof value !== "object") { return { valid: false, error: `参数 ${name} 应为对象类型`, }; }
if (param.enum && !param.enum.includes(value)) { return { valid: false, error: `参数 ${name} 的值 "${value}" 不在允许的枚举值中: ${param.enum.join(", ")}`, }; } } }
return { valid: true }; }
|