Ошибки не будет, если ты явно приведешь объект к нужному типу.
class Test {
a = 123;
b = 222;
}
interface Itest {
a: number,
}
const func = (instance: Itest) => console.log(instance)
func(new Test()) // Класс не реализует интерфейс, но ошибки нет, из-за структурной типизации
А как по другому описать объект и его свойства? Никак.
Великое заблуждение. Ничего этого там нет, и не будет.
Языки полезны, поэтому да, стоит.
Ну, а WebAssembly, кхм, боюсь многие не понимают его предназначения и возлагают огромные надежды которым не суждено сбыться.
ts также считаю, что имеет достаточно много недостатков