/** 转换为驼峰命名 */ type CamelCase = S extends `${infer First}-${infer Rest}` ? `${First}${CamelCase>}` : S /** 拼接 on 前缀 + 首字母大写 */ export type onCamelCaseAndCamelCase = `on${Capitalize>}` /** 拼接 on 前缀 + 驼峰化 */ export type onCamelCase = `on${Capitalize}` /** 遍历对象的所有 key,拼接 on + 首字母大写 */ export type WithOnPrefix = { [K in keyof T as onCamelCase]: T[K] } /**遍历对象所有 key,拼接 on + 首字母大写 + 驼峰 */ export type WithOnPrefixAndCamelCase = { [K in keyof T as onCamelCaseAndCamelCase]: T[K] }