When declaring a type of type Object in Typescript, Typescript allows you to pass any type of object regardless of the data type.

Example

type param = Object //You can also use {} instead of Object

function someFunction(obj: param) {
    return obj;
}

someFunction(new Date()); //Will get passed without any issues
someFunction({user: 'abc123'}) //Will get passed without any issues

Why do these objects above get passed through without any issues? This is due to an object in Javascript being the base of everything. In order to ensure type checking, we should use Record like so:

type param = Record<string, unknown>

function someFunction(obj: param) {
    return obj;
}

someFunction(new Date()); //Will get an error due to data type incompatibility
someFunction({user: 'abc123'}) //Will get passed without any issues
Alternative
type param = {
    [index: string]: string
}

function someFunction(obj: param) {
    return obj;
}

someFunction(new Date()); //Will get an error due to data type incompatibility
someFunction({user: 'abc123'}) //Will get passed without any issues