/** * 检查数组是否包含特定元素(不依赖顺序) * @param T - 数组类型 * @param U - 要检查的元素类型 * @returns 如果数组包含特定元素,则返回 true;否则返回 false */ type Contains = T extends readonly [ infer First, ...infer Rest ] ? First extends U ? true : Contains : false; type ElementOf = T extends readonly (infer U)[] ? U : never; type Has = Extract, V> extends never ? false : true;