TypeScript: непонятна реализация interface
Приветствую, камрады!
Имеем 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 там также не описано... Ничего не понимаю! |
Это же форум экмаскрипт, а не тайпскрипт. Врядли тут много знатоков
|
Цитата:
|
Все верно ругается.
http://stackoverflow.com/questions/3...own-properties |
Цитата:
[others: string]: any; Тогда начнет "принимать" и другие свойства. Но непонятно - почему не ругается на Object? Он же объявлен как интерфейс и там подобной строки нету. А принимает что угодно... |
Разобрался: https://github.com/Microsoft/TypeScr...ess-properties
Цитата:
|
Часовой пояс GMT +3, время: 20:52. |