Skip to main content

Object x object

  • Object x object

No TypeScript, a diferença entre Object e object é sutil, mas importante, especialmente quando se trata de tipagem e práticas de programação seguras. Aqui está um detalhamento das diferenças:

  1. Object:
    • Object refere-se ao tipo de construtor de todos os objetos no JavaScript. Isso inclui funções, arrays, e qualquer outra coisa que possa ser criada com {} ou new Object().
    • Quando você usa Object como um tipo em TypeScript, você está basicamente dizendo que o valor pode ser qualquer coisa que não seja um tipo primitivo (números, strings, booleans, etc.). No entanto, isso é bastante amplo e raramente recomendado porque não fornece muita segurança de tipo.
  2. object:
    • O tipo object é mais específico do que Object e é usado para indicar que algo é um objeto não primitivo. Em outras palavras, o valor é algo que tem a forma de um objeto como {}, mas não números, strings, ou booleans.
    • Esse tipo exclui os valores primitivos e também exclui funções e arrays, ao contrário do tipo Object.

Exemplo prático:

function logObject(obj: Object) {
console.log(obj);
}

function logNonPrimitive(obj: object) {
console.log(obj);
}

logObject(123); // Sem erro, porque 123 é um objeto em JavaScript
logNonPrimitive(123); // Erro, porque 123 é um primitivo e não um objeto `{}`

logObject(() => {}); // Sem erro, funções são objetos
logNonPrimitive(() => {}); // Erro, não aceita funções, mesmo que sejam objetos

Quando usar cada um?

  • Use object quando você quiser garantir que uma função ou método espera receber algo que seja estritamente um objeto no sentido de um conjunto de pares chave-valor, e você quer evitar primitivos, funções, e arrays.
  • Evite usar Object sempre que possível, pois ele é muito genérico e diminui a eficácia da tipagem forte do TypeScript. Se precisar de um tipo que aceite qualquer coisa, considere usar any ou, preferencialmente, unknown e realizar verificações de tipo apropriadas.

Portanto, a escolha entre Object e object pode afetar significativamente a segurança e clareza do seu código TypeScript.

Methods of Object

is()

The Object.is() method was introduced in ECMAScript 2015 (ES6) as a way to determine whether two values are exactly the same. It offers more precise comparisons in certain scenarios where the existing == (loose equality) and === (strict equality) operators fall short.

Object.is(value1, value2);

This method returns true if the two values are considered the same, and false otherwise.