diff --git a/packages/validator/src/types/primitive.boolean.ts b/packages/validator/src/types/primitive.boolean.ts
index d474210..0ea9bd3 100644
--- a/packages/validator/src/types/primitive.boolean.ts
+++ b/packages/validator/src/types/primitive.boolean.ts
@@ -1,4 +1,4 @@
-import type { IsEqual, Switch, t as tn } from '@typp/core'
+import type { IsEqual, IsIntersect, Switch, t as tn } from '@typp/core'
import { FALSY } from '../base'
import { preprocess } from '../utils.inner'
@@ -16,24 +16,46 @@ declare module '@typp/core' {
[T] extends [boolean] ? true : false,
Switch<{
any: [IsEqual, unknown]
- bigint: [
- [Input] extends [bigint] ? true : false,
- boolean
+ boolean: [
+ true extends (
+ | IsIntersect
+ | IsIntersect
+ | IsIntersect
+ ) ? true : false,
+ [InputRest] extends [never] ? (
+ Input extends infer UnionInputItem ? (
+ IsEqual extends true
+ ? boolean
+ : Extract
+ ) : never
+ ) : never
]
- self: [
- [Input] extends [boolean] ? true : false,
+ bigint: [
+ true extends (
+ | IsIntersect
+ | IsIntersect
+ ) ? true : false,
boolean
]
number: [
- [Input] extends [number] ? true : false,
+ true extends (
+ | IsIntersect
+ | IsIntersect
+ ) ? true : false,
boolean
]
string: [
- [Input] extends [string] ? true : false,
- boolean,
+ true extends (
+ | IsIntersect
+ | IsIntersect
+ ) ? true : false,
+ boolean
]
nullOrUndefined: [
- [Input] extends [null | undefined] ? true : false,
+ true extends (
+ | IsIntersect
+ | IsIntersect
+ ) ? true : false,
false
]
}>