当前我正在使用以下断言函数。
// declare
declare function assert(value: unknown): asserts value;
// use
assert(topPort !== null);
assert(bottomPort !== null);
assert(leftPort !== null);
assert(rightPort !== null);
我知道可以通过以下方法检查是 null
,
declare function isNull(value: unknown): asserts value is null
let a = null;
isNull(a)
但是,如何检查value
不是 null
// this `is not` invalid syntax
declare function isNotNull(value: unknown): asserts value is not null
答案 0 :(得分:1)
这在3.7新增功能的Assertion Functions部分的底部进行了说明,并使用了NonNullable实用程序类。
function assertIsDefined<T>(val: T): asserts val is NonNullable<T> {
if (val === undefined || val === null) {
throw new Error(
`Expected 'val' to be defined, but received ${val}`
);
}
}
注意:Typescript站点上的示例使用AssertionError
,但该示例在3.7.2中无法按原样工作,因此请将其更改为普通的Error
。