Я пытаюсь утверждать, что несколько значений не undefined
, используя функцию asserts
TypeScript. Хотя я могу утверждать одно значение, я не могу утверждать несколько значений одним утверждением. См. Ниже.
function assert1(a1: any): asserts a1 {
if (a1 === undefined) throw new Error()
}
function assert2(a1: unknown, a2: unknown) {
assert1(a1)
assert1(a2)
}
const foo = () => Math.random() < 0.5 ? 4999 : undefined
const a = foo()
const b = foo()
assert1(a)
console.log(a + 10) // works as expected, no errors
assert2(a, b)
console.log(a + b) // const b: 4999 | undefined, Object is possibly 'undefined'.(2532)
Я провел довольно много времени с этим, но безрезультатно. Можно ли сделать эту работу? Или я должен придерживаться традиционного:
if (!a || !b || !c || !d ...) {
throw ...
}
Спасибо за вашу помощь и понимание.