The answer by TUTAMKHAMON should work without import if you want to just see the type name on hover. You won't be able to CTRL+click to go to the type in the declaration file, though. In this case, you should specify something like this:
/**
* @typedef {{anything:any}} input_type
* @param {input_type} input
*/
async function test(input) {
return null
}

There are several ways if you want to see the actual contents of the object and not just type name. You can provide a complete object breakdown inside the curly brackets:
/**
* @param {{name:string,salary:number}} input
*/
async function test(input) {
return null
}

It has a disadvantage though, you would need to specify this structure in multiple places.
An alternative way of doing this:
/**
* @param {object} input
* @param {string} input.name
* @param {number} input.salary
*/
async function test(input) {
return null
}

You can also make use of the parameters destructuring feature:
/**
* @param {object} input
* @param {string} input.name
* @param {number} input.salary
*/
async function test({ name, salary }) {
return null
}

If this is a normal javascript type, you can just specify it directly inside the curly brackets:

You might be wondering what this weird syntax is. This is jsdoc syntax, this is not typescript, although it has some overlap in syntax. You can learn more about jsdoc here: https://jsdoc.app/about-getting-started.html
EDIT
You can also specify return types like this:
/**
* @param {object} input
* @param {string} input.name
* @param {number} input.salary
* @returns {Promise<string>}
*/
async function test(input) {
return `The salary of ${input.name} is ${input.salary}`
}
async function foo() {
const bar = await test({ name: "A", salary: 1000 })
}
