chore: bump version to 0.0.43, enhance JSON Schema type inference, and add usage examples

This commit is contained in:
2026-02-18 03:00:20 +08:00
parent ec094a594b
commit 554ff14fdc
5 changed files with 400 additions and 27 deletions

View File

@@ -0,0 +1,164 @@
import { createQueryApi } from '../src/query-api.ts';
// ============ 示例 1: 基础 JSON Schema 推断 ============
const api1 = {
"user": {
"get": {
"path": "user",
"key": "get",
"metadata": {
"args": {
"userId": {
"type": "string"
},
"includeProfile": {
"type": "boolean"
}
}
}
}
}
} as const;
const queryApi1 = createQueryApi({ api: api1 });
// ✅ 类型推断正常工作
queryApi1.user.get({
userId: '123', // ✅ 推断为 string
includeProfile: true // ✅ 推断为 boolean
});
// ❌ TypeScript 会报错
// queryApi1.user.get({
// userId: 123, // 错误:应该是 string
// wrongProp: 'test' // 错误:不存在的属性
// });
// ============ 示例 2: 嵌套对象 JSON Schema你的场景============
const api2 = {
"app_domain_manager": {
"get": {
"path": "app_domain_manager",
"key": "get",
"metadata": {
"args": {
"data": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": {
"type": "string"
},
"domain": {
"type": "string"
}
}
}
}
}
}
}
} as const;
const queryApi2 = createQueryApi({ api: api2 });
// ✅ 类型推断正常工作 - data 参数被推断为 { id: string, domain: string }
queryApi2.app_domain_manager.get({
data: {
id: '123',
domain: 'example.com'
}
});
// ❌ TypeScript 会报错
// queryApi2.app_domain_manager.get({
// data: {
// wrongProp: 'test' // 错误:不存在的属性
// }
// });
// ============ 示例 3: 复杂嵌套结构 ============
const api3 = {
"product": {
"create": {
"path": "product",
"key": "create",
"metadata": {
"args": {
"product": {
"type": "object",
"properties": {
"name": { "type": "string" },
"price": { "type": "number" },
"tags": {
"type": "array",
"items": { "type": "string" }
},
"metadata": {
"type": "object",
"properties": {
"color": { "type": "string" },
"size": { "type": "string" }
}
}
}
}
}
}
}
}
} as const;
const queryApi3 = createQueryApi({ api: api3 });
// ✅ 复杂嵌套类型推断
queryApi3.product.create({
product: {
name: 'T-Shirt',
price: 29.99,
tags: ['clothing', 'summer'],
metadata: {
color: 'blue',
size: 'M'
}
}
});
// ============ 示例 4: 枚举类型 ============
const api4 = {
"order": {
"updateStatus": {
"path": "order",
"key": "updateStatus",
"metadata": {
"args": {
"orderId": { "type": "string" },
"status": {
"type": "string",
"enum": ["pending", "processing", "shipped", "delivered"] as const
}
}
}
}
}
} as const;
const queryApi4 = createQueryApi({ api: api4 });
// ✅ 枚举类型推断
queryApi4.order.updateStatus({
orderId: 'ORD-123',
status: 'shipped' // ✅ 自动提示: "pending" | "processing" | "shipped" | "delivered"
});
// ❌ TypeScript 会报错
// queryApi4.order.updateStatus({
// orderId: 'ORD-123',
// status: 'invalid-status' // 错误:不在枚举值中
// });
console.log('✅ 所有类型推断示例运行成功!');