Есть выражение, которое применимо к презентациям, правда, но всё же: "Если после презентации не возникло вопросов, то либо презентация настолько хороша, что ответила на все возможные вопросы, либо презентация настолько плохая, что её никто не понял"
Я Вас поддерживаю, статья действительно очень интересная. Возможно, в будущем комментарии появятся ¯\_(ツ)_/¯
Начинал с неё, ибо был слабый ПК раньше. Достаточно хороший дистрибутив. Но потом решил, что пора менять что-то в своей жизни. Очень долго пытался выбрать удобный для себя дистрибутив, и mint не особо подходил. Сначала пробовал Ubuntu. Окрестился и решил попробовать другой корень. Долго выбирал, пытал Fedora, а позже вообще перешёл на Manjaro. Сейчас всё устраивает. Тут пока писал комментарий, нашёл возрождение Unity, кажется. Кому интересно можно посмотреть тут
Картинка с официального сайта
Unity7 ain’t ded ;)
Если всё пойдёт гладко с возрождением, то мы сможем увидеть Ubuntu в лице "великого и ужасного" Unity. По картинке UI достаточно приятен глазу
Звучит на самом деле логично. Я, если честно, сам не встречался с тем, что где-то нужен был приватный конструктор. Может быть я не в правильном сообществе нахожусь (сейчас не про Хабр, не подумайте), но набирает популярность factory method pattern.
Тут и поспорить трудно. Однако пример из статьи на Flow ныне выдаёт ошибку абсолютно на каждых строках. Что это: ошибка или тактический ход - не знаю :D
Реалии TS, к сожалению, таковы, что unsoundness можно получить даже, казалось бы, в абсолютно нормальном коде. Недавно смотрел выступление, в котором приводился очень яркий пример с котиками и собачками. Если попытаетесь запустить, то получите ошибку в рантайме. Однако, если так посмотреть, TypeScript и не ставит своей целью обезопасить написание кода с помощью типов. TypeScript - хороший инструмент, но такой инструмент эффективен только в хороших руках. У меня не такие, поэтому родилась эта статья :D Соглашусь с Вами, акцент на слове "осторожном" действительно нужно сделать
Для корректной работы возвращаемого значения Вам нужно будет "урезать" тип string[], который возвращает метод str.split(sep) до более узкого типа Split<T, S> . То есть, это обычное преобразование типов. Однако без явного преобразования типа TS скажет, что string[] и Split<T, S> несовместимы. Это некоторый хак, который верен с теоретической точки зрения. То есть, если алгоритм работы функции split будет неверным в практическом плане, то мы соответственно получим ошибку в рантайме, но при этом TS нам уже ничего подсказать на этапе разработки не сможет. Отсюда и предупреждение в статье:
Данный подход опасен, но при осторожном использовании может быть очень мощным средством
Посмотреть, как работает вывод типов можно здесь: Песочница
Касаемо своего варианта: пробивать потолок дальше и как можно сильнее. В кликерах есть очень интересная вещь, когда ты достиг максимума своих возможностей и дальше уже трудно продвигаться, тебе предлагают вариант: сбросить прогресс с некоторым модификатором - тут почти тоже самое. Когда ты достигаешь верхушки своих возможностей, то может стоит взглянуть на другие технологии? Возможно что-то будет новым для тебя? Сбросить прогресс и получить некий модификатор в виде накопленного опыта
Они ещё и баг с утечкой памяти пофиксить не могут. Правда тут сложно сказать, их ли это баг, потому что он проявляется только на windows, а на linux его нет (предположительно). Причём сегодня с ним столкнулся посмотрел, оказалось, что память поедается процессом GPU Firefox'а. Причём ещё и баг не всегда проявляется - прям странности какие-то :D
Не подскажете, где могу узнать подробнее о реализации трамплинов на типах? Поиски выдавали только конкретные реализации на JS и TS. Интересно было бы прочитать
Да, сталкивался с таким плагином в официальной онлайн песочнице TS, но детально не изучал его. Сейчас глянул на список задач, нашёл среди задач extreme вида парсер JSON. Впервые я что-то весомое решил в своей жизни. А-то на том же Codewars задачи от 6 kyu и ниже не могу решить :D
Если Вы на территории РФ, то да, так как по решению РКН refactoring guru заблокирован на территории РФ :(
Недавно на паре проходили. АПМДЗ - это СЗИ, а любое СЗИ подлежит сертификации, насколько знаю. Однако, могу ошибаться
TypeScript и рядом не компилируемый, если уж так. Он транспилируемый. В противном случае, мы бы на выходе получали не js файл, а объектный файл
Есть выражение, которое применимо к презентациям, правда, но всё же: "Если после презентации не возникло вопросов, то либо презентация настолько хороша, что ответила на все возможные вопросы, либо презентация настолько плохая, что её никто не понял"
Я Вас поддерживаю, статья действительно очень интересная. Возможно, в будущем комментарии появятся ¯\_(ツ)_/¯
Начинал с неё, ибо был слабый ПК раньше. Достаточно хороший дистрибутив. Но потом решил, что пора менять что-то в своей жизни. Очень долго пытался выбрать удобный для себя дистрибутив, и mint не особо подходил. Сначала пробовал Ubuntu. Окрестился и решил попробовать другой корень. Долго выбирал, пытал Fedora, а позже вообще перешёл на Manjaro. Сейчас всё устраивает. Тут пока писал комментарий, нашёл возрождение Unity, кажется. Кому интересно можно посмотреть тут
Если всё пойдёт гладко с возрождением, то мы сможем увидеть Ubuntu в лице "великого и ужасного" Unity. По картинке UI достаточно приятен глазу
По поводу классовых компонентов. У них есть одна проблема, которая описана в этой статье. Сейчас проверил - она до сих пор актуальна.
Ой, хорошо, буду знать. Надо будет получше изучить шаблоны проектирования. Спасибо за уточнение
Звучит на самом деле логично. Я, если честно, сам не встречался с тем, что где-то нужен был приватный конструктор. Может быть я не в правильном сообществе нахожусь (сейчас не про Хабр, не подумайте), но набирает популярность factory method pattern.
С асинхронными конструкторами тоже не встречался
Если я не ошибаюсь, то асинхронных конструкторов нет и в других языках. По крайней мере поиск не дал результатов на язык C#.
Если я где-то упоминал про асинхронные конструкторы, то процитируйте, пожалуйста, а-то, вроде, всю статью перечитал - не нашёл :D
Под "асинхронным созданием экземпляра класса" я имел ввиду, что может случится примерно следующий кейс:
Я думал привести подобный пример, но чувство, что меня за это архитекторы ПО в подворотне испинают :D
Тут и поспорить трудно. Однако пример из статьи на Flow ныне выдаёт ошибку абсолютно на каждых строках. Что это: ошибка или тактический ход - не знаю :D
Реалии TS, к сожалению, таковы, что unsoundness можно получить даже, казалось бы, в абсолютно нормальном коде. Недавно смотрел выступление, в котором приводился очень яркий пример с котиками и собачками. Если попытаетесь запустить, то получите ошибку в рантайме. Однако, если так посмотреть, TypeScript и не ставит своей целью обезопасить написание кода с помощью типов. TypeScript - хороший инструмент, но такой инструмент эффективен только в хороших руках. У меня не такие, поэтому родилась эта статья :D
Соглашусь с Вами, акцент на слове "осторожном" действительно нужно сделать
Для корректной работы возвращаемого значения Вам нужно будет "урезать" тип
string[]
, который возвращает методstr.split(sep)
до более узкого типаSplit<T, S>
. То есть, это обычное преобразование типов. Однако без явного преобразования типа TS скажет, чтоstring[]
иSplit<T, S>
несовместимы. Это некоторый хак, который верен с теоретической точки зрения.То есть, если алгоритм работы функции split будет неверным в практическом плане, то мы соответственно получим ошибку в рантайме, но при этом TS нам уже ничего подсказать на этапе разработки не сможет. Отсюда и предупреждение в статье:
Посмотреть, как работает вывод типов можно здесь: Песочница
Касаемо своего варианта: пробивать потолок дальше и как можно сильнее. В кликерах есть очень интересная вещь, когда ты достиг максимума своих возможностей и дальше уже трудно продвигаться, тебе предлагают вариант: сбросить прогресс с некоторым модификатором - тут почти тоже самое. Когда ты достигаешь верхушки своих возможностей, то может стоит взглянуть на другие технологии? Возможно что-то будет новым для тебя? Сбросить прогресс и получить некий модификатор в виде накопленного опыта
Они ещё и баг с утечкой памяти пофиксить не могут. Правда тут сложно сказать, их ли это баг, потому что он проявляется только на windows, а на linux его нет (предположительно). Причём сегодня с ним столкнулся посмотрел, оказалось, что память поедается процессом GPU Firefox'а. Причём ещё и баг не всегда проявляется - прям странности какие-то :D
А не Сергей Шахов у Вас случаем был ментором?)
Не подскажете, где могу узнать подробнее о реализации трамплинов на типах? Поиски выдавали только конкретные реализации на JS и TS. Интересно было бы прочитать
Посмотрел, спасибо, и правда проще намного
Да, сталкивался с таким плагином в официальной онлайн песочнице TS, но детально не изучал его. Сейчас глянул на список задач, нашёл среди задач extreme вида парсер JSON. Впервые я что-то весомое решил в своей жизни. А-то на том же Codewars задачи от 6 kyu и ниже не могу решить :D
Баг с полем типа number лет 5 же не могут решить (если не больше)