Антон Швец, да, это я видел. Это ничего не меняет, ТС предоставляет полноценную систему типизации используя которую можно не допустить этого. А вы её игнорируете
ТС предполагает полностью детерминированный workflow, нельзя просто выкинуть большую часть функционала и удивляться ошибкам. Ну то есть можно, но это мне кажется странно
Антон Швец, ну такая возможность ведь существует; пока что я не услышал ни одного аргумента против.
"Ошибка это как раз нормально. Ненормально присвоение несуществующему свойству без всяких ошибок" - эээ, ну так вы просто игнорируете систему типизации ТС, естественно будут ошибки. Для этого же и существуют типы
effect_tw, если это вопрос, то в целом да, эти свойства будут доступны. Правда консоль вам их так просто не покажет, нужно будет либо прямо обращаться по ключу который вы использовали при объявлении свойства, либо доставать список ключей с помощью Object.keys, либо использовать console.dir
effect_tw, а что конкретно не укладывается? Вроде всё просто: Object это такая сущность которая умеет хранить в себе данные доступные по строковым ключам, Function расширяет Object в том числе специфическим функционалом - её можно выполнить.
effect_tw, тезис "функция counter возвращает строку" никак не связан с тезисом "как мы можем обращаться к ней как к объекту?". Вы вполне можете обратиться к функции как к объекту (независимо от возвращаемого значения) потому что функция это полноценный объект.
Антон Швец, у вас же вроде конструктор не определён
"можно ли так для функции задавать свойства, не зная еще что она вернёт" - а что конкретно вам в этой ситуации не нравится? И почему не знаем, в интерфейсе же указано что функция вернёт строку. Свойства никак не связаны с возвращаемым значением, по крайней мере в данном конкретном примере
И правда, по спеке getComputedStyle должен возвращать значения только для реальных свойств, а не для алиасов. Но по факту достаточное количество браузеров все таки обрабатывают обращения к алиасам; я таких уже два насчитал и они единственные которыми я пользуюсь. Я совсем не говорю что в связи с этим можно теперь забить на мдн и для удобства пользоваться исключительно алиасами, но если уж даже в такой мелочи браузеры не согласны друг с другом, то гораздо безопаснее будет все же обращаться к нужным свойствам с помощью getPropertyValue чтобы не нарваться на неожиданные результаты
"не стоит пихать свойства в функцию" - я помню, но пока что ведь ни одного аргумента так и не появилось, поэтому и тему я развить не могу