В JS ведь нет интерфейсов. TS всё таки попытка ограничить JS чтобы это более менее просто проверять типы. Интерфейс это неплохо, да и можно использовать хитрый union тип или Record вместо простого интерфейса, но это все-таки далёкая аппроксимация динамической природы JS. Если бы TS хотел отразить эту динамичность, то ИМХО тип должен изменяться вместе с изменением объекта.
Думаю что всё таки сравнение с Rust слишком сильное (хотя про инварианты это чаще всего правда). Да, TypeScript улучшается каждый год, но всё же корректность типов у них не является Design Goal: https://github.com/microsoft/TypeScript/wiki/TypeScript-Design-Goals (Non-Goal #3) и на этой основе они иногда не хотят делать его слишком стогим и к этому пока что всё ещё нужно быть готовым.
У меня адаптеры от TP-link, взял самые дорогие. Скорость от 300 Мбит (разные автоматы / комнаты в щитке). Микроволновка роняет скорость. В разных розетках (даже на одном автомате) скорость разная.
Во-первых спасибо за статью, мало кто пишет про веб компоненты. Хотелось бы уточнить что всё местами несколько сложнее чем описано. Например, инкапсуляция стилей выглядит немного поломанной, для тех кто только начинает работать с веб компонентами, но по факту просто наследуемые стили протекают по дизайну и это можно пофиксить одной строкой, после чего стили полностью изолированы (внутрь пробрасываются CSS переменные и можно, но не удобно, стилизовать т.н. parts). Кажется что передавать можно только строки в атрибуты, но по факту это только важно для полностью декларативного рендеринга на сервере, сами компоненты имеют настоящие свойства доступные из других фреймворков и вообще js. Ну и для SEO вполне реально отрендерить контент и запихать в слот, а потом распарить или даже выкинуть на клиенте. В целом внутри веб компонента может жить как сложное приложение так и простые контролы.
Могли бы просто признать ошибку. У вас в комментарии прямо написано: "базируется на Observable, даже по факту те же сигналы работают на их базе, просто являются сахаром". А теперь вы пишите что надо посмотреть на механику... хотя в шаблоны переменные встраиваются похожим образом почти везде.
В JS ведь нет интерфейсов. TS всё таки попытка ограничить JS чтобы это более менее просто проверять типы. Интерфейс это неплохо, да и можно использовать хитрый union тип или Record вместо простого интерфейса, но это все-таки далёкая аппроксимация динамической природы JS. Если бы TS хотел отразить эту динамичность, то ИМХО тип должен изменяться вместе с изменением объекта.
По умолчанию всё таки синхронно https://habr.com/ru/articles/529000/
Я бы рекомендовал не просто клонировать с помощью спред оператора, а делать structuredClone.
Думаю что всё таки сравнение с Rust слишком сильное (хотя про инварианты это чаще всего правда). Да, TypeScript улучшается каждый год, но всё же корректность типов у них не является Design Goal: https://github.com/microsoft/TypeScript/wiki/TypeScript-Design-Goals (Non-Goal #3) и на этой основе они иногда не хотят делать его слишком стогим и к этому пока что всё ещё нужно быть готовым.
У меня адаптеры от TP-link, взял самые дорогие. Скорость от 300 Мбит (разные автоматы / комнаты в щитке). Микроволновка роняет скорость. В разных розетках (даже на одном автомате) скорость разная.
Во-первых спасибо за статью, мало кто пишет про веб компоненты. Хотелось бы уточнить что всё местами несколько сложнее чем описано. Например, инкапсуляция стилей выглядит немного поломанной, для тех кто только начинает работать с веб компонентами, но по факту просто наследуемые стили протекают по дизайну и это можно пофиксить одной строкой, после чего стили полностью изолированы (внутрь пробрасываются CSS переменные и можно, но не удобно, стилизовать т.н. parts). Кажется что передавать можно только строки в атрибуты, но по факту это только важно для полностью декларативного рендеринга на сервере, сами компоненты имеют настоящие свойства доступные из других фреймворков и вообще js. Ну и для SEO вполне реально отрендерить контент и запихать в слот, а потом распарить или даже выкинуть на клиенте. В целом внутри веб компонента может жить как сложное приложение так и простые контролы.
Могли бы просто признать ошибку. У вас в комментарии прямо написано: "базируется на Observable, даже по факту те же сигналы работают на их базе, просто являются сахаром". А теперь вы пишите что надо посмотреть на механику... хотя в шаблоны переменные встраиваются похожим образом почти везде.
Так на всякий случай, в реализации ангуляровских сигналов нет ни капли Observable