柯里化的数组类型守卫
注意:空数组 [] 始终返回 true(全称量词对空集成立)。 这意味着 arrayGuard(isString)([]) 为 true,且 [] 被推断为 string[]。 若下游代码假设数组非空并访问 arr[0],需自行防御。 如需同时保证非空,配合 and 附加长度检查。
[]
true
arrayGuard(isString)([])
string[]
arr[0]
— 元素类型守卫
柯里化后的数组类型守卫函数 TypeGuard<T[]>
TypeGuard<T[]>
const isStringArray = arrayGuard(isString);isStringArray(['a', 'b']); // trueisStringArray(['a', 1]); // falseisStringArray([]); // true ← 空数组通过!下游注意防御// 同时要求非空const isNonEmptyStringArray = and(isStringArray, arr => arr.length > 0);isNonEmptyStringArray([]); // false Copy
const isStringArray = arrayGuard(isString);isStringArray(['a', 'b']); // trueisStringArray(['a', 1]); // falseisStringArray([]); // true ← 空数组通过!下游注意防御// 同时要求非空const isNonEmptyStringArray = and(isStringArray, arr => arr.length > 0);isNonEmptyStringArray([]); // false
柯里化的数组类型守卫
注意:空数组
[]始终返回true(全称量词对空集成立)。 这意味着arrayGuard(isString)([])为true,且[]被推断为string[]。 若下游代码假设数组非空并访问arr[0],需自行防御。 如需同时保证非空,配合 and 附加长度检查。