interface Person { name: string };
let person : Person = { name: "John Smith" };
let empt: {} = person;
I don't really understand the idea why typescript allow the above code to be compiled, isn't that {} means it doesn't contain any properties, but Person has one property name, {} obviously doesn't contain a property name called name, how Person type can be assignable to an empty type?
{}is an object type without properties which (or: whose type) you care about.