From 4fe89357fc71fc1b979a291b414fc4bb185a3c2f Mon Sep 17 00:00:00 2001 From: eric_wang Date: Sun, 12 Jun 2022 18:01:46 +0800 Subject: [PATCH] feat: add WeakRef interface --- .idea/workspace.xml | 86 +++++++++++++++++++++++++++++++++++++++++++++ source/index.ts | 4 +-- source/types.ts | 10 ++++++ 3 files changed, 98 insertions(+), 2 deletions(-) create mode 100644 .idea/workspace.xml diff --git a/.idea/workspace.xml b/.idea/workspace.xml new file mode 100644 index 0000000..1ffeaef --- /dev/null +++ b/.idea/workspace.xml @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1645820743983 + + + + + + + + + + \ No newline at end of file diff --git a/source/index.ts b/source/index.ts index 4ea343f..b16ed6b 100644 --- a/source/index.ts +++ b/source/index.ts @@ -612,8 +612,8 @@ export const assert: Assert = { }, buffer: (value: unknown): asserts value is Buffer => assertType(is.buffer(value), 'Buffer', value), blob: (value: unknown): asserts value is Blob => assertType(is.blob(value), 'Blob', value), - nullOrUndefined: /* eslint-disable-line @typescript-eslint/ban-types */ (value: unknown): asserts value is null | undefined => assertType(is.nullOrUndefined(value), AssertionTypeDescription.nullOrUndefined, value), - object: (value: unknown): asserts value is Record => assertType(is.object(value), 'Object', value), + nullOrUndefined: (value: unknown): asserts value is null | undefined => assertType(is.nullOrUndefined(value), AssertionTypeDescription.nullOrUndefined, value), + object: (value: unknown): asserts value is object => assertType(is.object(value), 'Object', value), iterable: (value: unknown): asserts value is Iterable => assertType(is.iterable(value), AssertionTypeDescription.iterable, value), asyncIterable: (value: unknown): asserts value is AsyncIterable => assertType(is.asyncIterable(value), AssertionTypeDescription.asyncIterable, value), generator: (value: unknown): asserts value is Generator => assertType(is.generator(value), 'Generator', value), diff --git a/source/types.ts b/source/types.ts index 3940da2..30a1ec7 100644 --- a/source/types.ts +++ b/source/types.ts @@ -49,3 +49,13 @@ export interface ObservableLike { // eslint-disable-next-line @typescript-eslint/ban-types export type Falsy = false | 0 | 0n | '' | null | undefined; + +export interface WeakRef { + readonly [Symbol.toStringTag]: "WeakRef"; + + /** + * Returns the WeakRef instance's target object, or undefined if the target object has been + * reclaimed. + */ + deref(): T | undefined; +}