跳到主要内容

Guard Function

守卫函数在数据进入业务逻辑前做断言与类型收窄:不满足条件时立即失败,满足时把类型收窄到安全范围。

项目中的实现

  • 源码: src/guardFunction.ts
  • 导出: assertDefinedassertNonEmptyArrayisRecord

各函数示例

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 推断更窄类型