Приветствую, камрады!
Имеем TS 1.8
Пишу так:
var v: Object;
v = {name1: 'val1'}
Все хорошо компилируется. Вроде как Object совместим с любым объектом.
Пишу вот так:
interface MyInterface {
name2: string;
}
var v: MyInterface;
v = {name1: 'val1'} // <--- РУГАЕТСЯ
И он ругается: Error:(138, 55) TS2322: Type '{ name1: "val1"}' is not assignable to type 'MyInterface '.
Object literal may only specify known properties, and 'name1' does not exist in type 'MyInterface '.
НО! Если только "known properties", то почему не ругаетс на первый вариант с Object? Ведь в lib.d.ts Object также определен как Interface:
> interface Object {...
И, естественно, никакого name1 там также не описано...
Ничего не понимаю!