Executando verificação de segurança...
2

Diferença entre 'Object', '{}' e 'object' no TypeScript

No TypeScript se tem várias formas de se definir o tipo object, que são 'Object', '{}' e 'object', vamos descobrir as diferenças entre elas.

Object:
Descreve a funcionalidade disponivel em todos os objetos Javascript, ou seja, inclui propiedades como toString(), valueOf() e todas outras. Sendo assim é possivel atribuir os tipos string, boolean, number, bigint, symbol , mas não o contrário.

{
    let obj: Object = {};
    // ✅
    obj = 1;
    obj = '1';
    obj = true;
    obj = Symbol(1);
}
{
    let obj: Object = {};
    // ❌
    let numberValue: number = obj;
    let stringValue: string = obj;
    let bigintValue: bigint = obj;
    let booleanValue: boolean = obj;
    let symbolValue: symbol = obj;
}

{}
Se refere a um objeto que não possui propriedade própria, mas também pode acessar as mesma funcionalidades do Object e também atribuir os mesmos tipos.

{
    let obj: {} = { number: 1 };

    // ❌ Property 'name' does not exist on type '{}'
    console.log(obj.name);
}

{
    let obj = {};
    // ✅
    obj = 1;
    obj = '1';
    obj = true;
    obj = Symbol(1);
}

{
    let obj: {} = {};

    // ❌
    let numberValue: number = obj;
    let stringValue: string = obj;
    let bigintValue: bigint = obj;
    let booleanValue: boolean = obj;
    let symbolValue: symbol = obj;
}

object
Representa qualquer valor que não seja valor primitivo, por isso os valores primitivos não podem ser atribuidos.

{
    let obj: object = {};

    // ❌
    obj = 1;
    obj = '1';
    obj = true;
    obj = Symbol(1);

    // ✅
    obj = {};
    obj = [];
    obj = () => {};
}

{
    let obj: object = {};

    // ❌
    let numberValue: number = obj;
    let stringValue: string = obj;
    let bigintValue: bigint = obj;
    let booleanValue: boolean = obj;
    let symbolValue: symbol = obj;
}
Carregando publicação patrocinada...