Reflect.js
function deleteMetadata(metadataKey, target, propertyKey) {
            if (!IsObject(target))
                throw new TypeError();
            if (!IsUndefined(propertyKey))
                propertyKey = ToPropertyKey(propertyKey);
            var metadataMap = GetOrCreateMetadataMap(target, propertyKey, /*Create*/ false);
            if (IsUndefined(metadataMap))
                return false;
            if (!metadataMap.delete(metadataKey))
                return false;
            if (metadataMap.size > 0)
                return true;
            var targetMetadata = Metadata.get(target);
            targetMetadata.delete(propertyKey);
            if (targetMetadata.size > 0)
                return true;
            Metadata.delete(target);
            return true;
        }
function deleteMetadata(metadataKey, target, propertyKey) {
            if (!IsObject(target))
                throw new TypeError();
            if (!IsUndefined(propertyKey))
                propertyKey = ToPropertyKey(propertyKey);
            var metadataMap = GetOrCreateMetadataMap(target, propertyKey, /*Create*/ false);
            if (IsUndefined(metadataMap))
                return false;
            if (!metadataMap.delete(metadataKey))
                return false;
            if (metadataMap.size > 0)
                return true;
            var targetMetadata = Metadata.get(target);
            targetMetadata.delete(propertyKey);
            if (targetMetadata.size > 0)
                return true;
            Metadata.delete(target);
            return true;
        }
function deleteMetadata ( metadataKey , target , propertyKey ) { if ( ! IsObject ( target ) ) throw new TypeError ( ) ; if ( ! IsUndefined ( propertyKey ) ) propertyKey = ToPropertyKey ( propertyKey ) ; var metadataMap = GetOrCreateMetadataMap ( target , propertyKey , /*Create*/ false ) ; if ( IsUndefined ( metadataMap ) ) return false ; if ( ! metadataMap . delete ( metadataKey ) ) return false ; if ( metadataMap . size > 0 ) return true ; var targetMetadata = Metadata . get ( target ) ; targetMetadata . delete ( propertyKey ) ; if ( targetMetadata . size > 0 ) return true ; Metadata . delete ( target ) ; return true ; }
Deletes the metadata entry from the target object with the provided key.
@param metadataKey A key used to store and retrieve metadata.
@param target The target object on which the metadata is defined.
@param propertyKey (Optional) The property key for the target.
@returns `true` if the metadata entry was found and deleted; otherwise, false.
@example

class Example {
// property declarations are not part of ES6, though they are valid in TypeScript:
// static staticProperty;
// property;

constructor(p) { }
static staticMethod(p) { }
method(p) { }
}

// constructor
result = Reflect.deleteMetadata("custom:annotation", Example);

// property (on constructor)
result = Reflect.deleteMetadata("custom:annotation", Example, "staticProperty");

// property (on prototype)
result = Reflect.deleteMetadata("custom:annotation", Example.prototype, "property");

// method (on constructor)
result = Reflect.deleteMetadata("custom:annotation", Example, "staticMethod");

// method (on prototype)
result = Reflect.deleteMetadata("custom:annotation", Example.prototype, "method");
Deletes the metadata entry from the target object with the provided key . @param metadataKey A key used to store and retrieve metadata . @param target The target object on which the metadata is defined . @param propertyKey ( Optional ) The property key for the target . @returns true if the metadata entry was found and deleted ; otherwise false . @example