diff --git a/src/get-metadata.test.ts b/src/get-metadata.test.ts index da76e5b..0509e86 100644 --- a/src/get-metadata.test.ts +++ b/src/get-metadata.test.ts @@ -40,3 +40,11 @@ test('when defined on prototype with a property key', () => { Reflect.defineMetadata('key', 'value', prototype, 'name'); expect(Reflect.getMetadata('key', target, 'name')).toEqual('value'); }); + +test('when value is falsy', () => { + const target = {}; + const value = 0; + + Reflect.defineMetadata('key', value, target, 'name'); + expect(Reflect.getMetadata('key', target, 'name')).toEqual(value); +}); \ No newline at end of file diff --git a/src/index.ts b/src/index.ts index 0c1ab4d..9b02988 100644 --- a/src/index.ts +++ b/src/index.ts @@ -125,14 +125,14 @@ function ordinaryGetMetadata( target: Target, propertyKey?: PropertyKey, ): MetadataValue | undefined { - return ordinaryGetOwnMetadata(metadataKey, target, propertyKey) + return ordinaryGetOwnMetadata(metadataKey, target, propertyKey) !== undefined ? ordinaryGetOwnMetadata(metadataKey, target, propertyKey) : Object.getPrototypeOf(target) ? ordinaryGetMetadata( - metadataKey, - Object.getPrototypeOf(target), - propertyKey, - ) + metadataKey, + Object.getPrototypeOf(target), + propertyKey, + ) : undefined; } @@ -175,7 +175,7 @@ export function hasOwnMetadata( target: Target, propertyKey?: PropertyKey, ): boolean { - return !!ordinaryGetOwnMetadata(metadataKey, target, propertyKey); + return ordinaryGetOwnMetadata(metadataKey, target, propertyKey) !== undefined; } export function hasMetadata( @@ -183,7 +183,7 @@ export function hasMetadata( target: Target, propertyKey?: PropertyKey, ): boolean { - return !!ordinaryGetMetadata(metadataKey, target, propertyKey); + return ordinaryGetMetadata(metadataKey, target, propertyKey) !== undefined; } export function defineMetadata(