Creo que codificando así JS no se hecha de menos TS. Sí, hay alguna feature ligeramente distinta, pero lo importante de Typescript es el type safe, y con JSDoc … ¿puede que no lo eche de menos?.
La inicializacion del objeto está a base de autocomplete y VSCode lo entiende perfectamente
/**
* @typedef {object} User
* @property {string} name
* @property {string} email
* @property {Adress} adress
*/
/**
* @typedef {object} Adress
* @property {string} street
*/
/** @type {User} */
let user1;
user1 = {
name: "John",
email: "john@fakemail.com",
adress: { street: "fake street" },
};
Super tutorial aquí: https://alexharri.com/blog/jsdoc-as-an-alternative-typescript-syntax