/** API 命名 - 前缀类型 */ type API_PREFIX = 'ADD' | 'DEL' | 'SET' | 'GET'; /** API 命名 - 键名检查 */ type NameCheck = N extends `${infer L extends | Uppercase | '_'}${infer R}` ? NameCheck : Prev extends `${infer S}_` ? S : Prev; /** * 定义 API 对象 * * @export * @description 限制参数数量为一个,与 reducer 函数对应 * @param {L} api API 对象,名称格式以 "ADD" | "DEL" | "SET" | "GET" 开头,以 "_" 作为连字符,全大写英文字母命名 */ export function defineApis Res.Promises>>(api: { [K in keyof L]: K extends `${API_PREFIX}_${infer S}` ? (S extends NameCheck ? L[K] : never) : never; }): Readonly { return api; }