Q:

Qual é a definição de delete JavaScript

Me deparei com uma instrução onde o delete representa um tipo em JavaScript. Pelo menos foi o que eu entendi.
Gostaria da ajuda de vocês pois não encontrei nenhuma referencia na internet.
if (MvL.object.hasValue(domain.cpf) || MvL.object.hasValue(domain.cnpj)) {
  delete domain.nome_cliente;
  delete domain.cod_cgl;
  delete domain.uf;
}

A:

delete não é um tipo, mas sim um operador remove uma propriedade de um objeto. No entanto, só irá funcionar em propriedades que possuam o atributo de propriedade [[Configurable]] definido como true. Veja:

const obj = {};
obj.name = 'Luiz';
Object.defineProperty(obj, 'lastName', {
  enumerable: true,
  configurable: false // Não irá permitir que deletemos a propriedade `name`.
});

console.log(obj); 
delete obj.name;
delete obj.lastName;
console.log(obj);

No modo normal do JavaScript, se você tentar deletar uma propriedade não configurável, false será retornado. No entanto, se você estiver no modo estrito, um erro será lançado:

'use strict';

const obj = {};
Object.defineProperty(obj, 'lastName', {
  enumerable: true,
  configurable: false
});

delete obj.lastName; // Uncaught TypeError: Cannot delete property 'lastName'

Esse operador irá retornar true em todos os casos, exceto quando você tentar remover uma propriedade não configurável sem estar no modo estrito – já vimos que nesse último caso, um erro é lançado.
Se, mesmo no modo estrito, você quiser receber um booleano false se não tiver conseguido deletar a propriedade, você pode usar o método Reflect.deleteProperty:

'use strict';

const obj = {};
obj.name = 'Luiz';
Object.defineProperty(obj, 'lastName', {
  enumerable: true,
  configurable: false
});

console.log(obj); 
console.log(Reflect.deleteProperty(obj, 'name')); // true
console.log(Reflect.deleteProperty(obj, 'lastName')); // false
console.log(obj);

Vale dizer que tanto delete quanto Reflect.deleteProperty retornarão true mesmo se a propriedade que você tentar deletar não existir.

