Guard Function
守卫函数在数据进入业务逻辑前做断言与类型收窄:不满足条件时立即失败,满足时把类型收窄到安全范围。
项目中的实现
- 源码:
src/guardFunction.ts - 导出:
assertDefined、assertNonEmptyArray、isRecord
各函数示例
assertDefined
import { assertDefined } from 'wssf-kage-js';
const id = assertDefined(process.env.USER_ID, '缺少 USER_ID');
assertNonEmptyArray
import { assertNonEmptyArray } from 'wssf-kage-js';
assertNonEmptyArray([1, 2], '列表不能为空'); // => [1, 2]
// assertNonEmptyArray([], '…'); // 抛错
isRecord
import { isRecord } from 'wssf-kage-js';
const payload: unknown = { a: 1 };
if (isRecord(payload)) {
payload['a'];
}
什么时候优先用
- API 边界、配置加载后的快速失败
- 在不大改结构的前提下,用断言帮助 TypeScript 推断更窄类型