如何使用 Typescript 3.7 断言函数声明 "is not null" 类型断言
How to declare "is not null" type assertion using Typescript 3.7 Assertion Functions
目前我正在使用以下断言函数。
// 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
这显示在 Assertion Functions section of the What's New in 3.7, and uses the NonNullable 实用程序 class 的底部。
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
.
目前我正在使用以下断言函数。
// 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
这显示在 Assertion Functions section of the What's New in 3.7, and uses the NonNullable 实用程序 class 的底部。
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
.