组合守卫(AND)
所有守卫按顺序执行,短路求值——任一失败立即返回 false,不执行后续守卫。 第一个守卫收窄类型到 T,后续守卫在 T 上做进一步筛选。 全部通过后 val 被收窄为 T。
false
— 第一个为 TypeGuard <T>(类型守卫),后续为 (val: T) => boolean(断言函数)
<T>
(val: T) => boolean
组合后的 TypeGuard <T>
const isStringArray = arrayGuard(isString);const isNonEmptyStringArray = and(isStringArray, arr => arr.length > 0); Copy
const isStringArray = arrayGuard(isString);const isNonEmptyStringArray = and(isStringArray, arr => arr.length > 0);
组合守卫(AND)
所有守卫按顺序执行,短路求值——任一失败立即返回
false,不执行后续守卫。 第一个守卫收窄类型到 T,后续守卫在 T 上做进一步筛选。 全部通过后 val 被收窄为 T。