Разницу между а) исходным текстом и б) результатом компиляции уловили?
Спасибо, вы мне просто как глаза открыли.
Для компилируемых языков типа TS проверка переменных на соотвествие типов производиться только на этапе компиляции.
Но нет гарантии, что типы, выведенные при компиляции, будут такими же и во время выполнения. Поэтому в тайпскрипте (как, кстати, и в С++) — типизация слабая (но статическая). А, например, в C# (без неуправляемого кода) — типизация сильная.
Напомню, что изначальная дискуссия была по вопросу, есть ли в тайпскрипте сильная типизация.
На этом дискуссию завершаю, ваш хамский тон и отношение к собеседникам, как к дуракам, мне неприятно.
Статическая типизация — типы проверяются при компиляции.
Динамическая типизация — типы проверяются во время выполнения.
Тут уже менее четкое разделение:
Сильная типизация — тип значения переменной определен, и во время выполнения программы не изменяется
Слабая типизация — одно и то же значение может интерпретироваться как разные типы
Тайпскрипт добавляет опциональную статическую типизацию — она действует только во время компиляции. Но во время выполнения тайпскрипта уже не существует, и типизация динамическая и слабая, как в джаваскрипте.
Тайпскрипт привносил бы сильную типизацию только в том гипотетическом случае, если бы он генерировал код проверок типов во время выполнения (чего он не делает).
Сильная типизация — это когда каждая переменная имеет свой тип во время выполнения, и попытка записать туда значение другого типа (без приведения типов) вызовет ошибку.
В Джаваскрипте типизация динамическая, тип переменной определяется типом текущего записанного туда значения.
Тайпскрипт добавляет в джаваскрипт аннотации типов, которые, тем не менее, не могут изменить динамическую природу языка. Там можно кастовать все в any и записывать что угодно во что угодно, даже включив все флаги компилятора.
Пишу это, потому что это важно понимать тем, кто изучает тайпскрипт, и хочет понять мотивацию, например, его системы типов.
Бывают ситуации, когда невозможно доказать что-то не вообще, а этому конкретному человеку, например, джуну. У него нет опыта в сопровождении и поддержке кода, только в написании, и ваши аргументы для него не аргументы, т.к. основаны на вашей практике, а у него такой практики еще не было, и ваш опыт ему не аргумент.
Например, я знаю джуна, который в тайпскрипте не пишет типы, или же пишет везде any. На объяснения о пользе аннотаций типов, о сопровождении и дополнительной информации, которую дают типы, возражает, что это же больше кода, это же надо менять, если что-то поменяется. И доказать, именно доказать, здесь ничего не возможно.
Все хорошо, только учить разные технологии — это не «как в РПГ». Если, конечно, не ставить целью овладение технологией ради технологии (а не ради решения бизнес-задачи).
Так с++ собирается под разные платформы, а пайтон и джаваскрипт запускаются на разных платформах.
Получит этот герой-глава команды только ненависть электората и поливание грязью в купленных (читай, всех) СМИ за деньги ста семей.
Эхх, если бы так все просто было бы...
Утверждения, может, и противоположные, но в реальности разница в том, как ты хочешь отдать: по-хорошему, или по-плохому. К сожалению.
DateTimeOffset — это не локальное время. Это абсолютное плюс оффсет (указывающий локальное время источника).
В данном случае эта разница чисто косметическая. Типа "чайник долго закипает" и "чайник долго не закипает".
Как по мне, так такие Пупкины как раз и являются опорой разных античеловеческих режимов.
Тем, что невозможно узнать локальное время события в таймзоне источника события.
Спасибо, вы мне просто как глаза открыли.
Но нет гарантии, что типы, выведенные при компиляции, будут такими же и во время выполнения. Поэтому в тайпскрипте (как, кстати, и в С++) — типизация слабая (но статическая). А, например, в C# (без неуправляемого кода) — типизация сильная.
Напомню, что изначальная дискуссия была по вопросу, есть ли в тайпскрипте сильная типизация.
На этом дискуссию завершаю, ваш хамский тон и отношение к собеседникам, как к дуракам, мне неприятно.
Тут есть небольшая путаница в терминологии:
Тут уже менее четкое разделение:
Тайпскрипт добавляет опциональную статическую типизацию — она действует только во время компиляции. Но во время выполнения тайпскрипта уже не существует, и типизация динамическая и слабая, как в джаваскрипте.
Тайпскрипт привносил бы сильную типизацию только в том гипотетическом случае, если бы он генерировал код проверок типов во время выполнения (чего он не делает).
Сильная типизация — это когда каждая переменная имеет свой тип во время выполнения, и попытка записать туда значение другого типа (без приведения типов) вызовет ошибку.
В Джаваскрипте типизация динамическая, тип переменной определяется типом текущего записанного туда значения.
Тайпскрипт добавляет в джаваскрипт аннотации типов, которые, тем не менее, не могут изменить динамическую природу языка. Там можно кастовать все в
anyи записывать что угодно во что угодно, даже включив все флаги компилятора.Пишу это, потому что это важно понимать тем, кто изучает тайпскрипт, и хочет понять мотивацию, например, его системы типов.
В Тайпскрипте нет сильной типизации, как и в Джаваскрипте.
Бывают ситуации, когда невозможно доказать что-то не вообще, а этому конкретному человеку, например, джуну. У него нет опыта в сопровождении и поддержке кода, только в написании, и ваши аргументы для него не аргументы, т.к. основаны на вашей практике, а у него такой практики еще не было, и ваш опыт ему не аргумент.
Например, я знаю джуна, который в тайпскрипте не пишет типы, или же пишет везде
any. На объяснения о пользе аннотаций типов, о сопровождении и дополнительной информации, которую дают типы, возражает, что это же больше кода, это же надо менять, если что-то поменяется. И доказать, именно доказать, здесь ничего не возможно.У тебя правильно, но можно сделать лучше. И попробуй докажи, что оно лучше.
Это, кстати, как раз тот случай, когда немного авторитаризма не помешает.
Но в чем смысл, если в vs code все работает сразу, хорошо и быстро?
То есть vs code, но без electron. Ну такое себе преимущество
Хм, а вебсокеты умеют в request-response flow? Понятно, что эмулировать можно, но по дефолту?
А перестраивать всю архитектуру под двунаправленные серверные потоки данных — это намного сложнее, чем AJAX.
Быть синьор фулл стеком и не считать мнение автора из интернета абсолютной истиной.
Можно пользоваться, но пользуются редко (тк на джаваскрипте так тоже никто не делает).
Однако, называть это профанством я бы не стал. И прям выносить приговор квалификации разработчика — тоже не стал бы.
Все хорошо, только учить разные технологии — это не «как в РПГ». Если, конечно, не ставить целью овладение технологией ради технологии (а не ради решения бизнес-задачи).