All streams
Search
Write a publication
Pull to refresh
-7
0

Пользователь

Send message

Я устал чтото пытаться обьяснить человеку - который не может адекватно прочитать не то что коментарий, а даже материал который скидывает... Сами попытайтесь понять почему выше указаное не работает, и советую избавиться от привычки вырезать как можно больше кода - это ведёт к очень плачевным результатам...

Ну так загляните в эту доку - буквально тоже самое что я написал, только не воид а Moment возвращается :D

function fn(x: string): Moment;
function fn(x: number): Moment;
function fn(x: number | string) {
  // When written with separate overloads, incorrectly an error
  // When written with union types, correctly OK
  return moment().utcOffset(x);
}

а смысл от этого огромный - так как типизация это одновременно документация:

Уже первый вариант более приятный, так как относится к конкретному юзкейсу. А если число типов которые могут быть переданы будет намного больше и это будут не примитивы, а какие-нибудь сложные классы, которые значительно влияют на исполнение(например возникает возможность выброса особых исключений) то первый вариант будет юзерфрендли, в отличии от второго. И материть будут за второй код, в то время как за первый будут хвалить :D

Можно пожалуйста ссылку на источник где сказано что это антишаблоны, ни капли не верится

Мне интересно с каких пор перегрузка параметров является антипатерном? Может быть если я напишу вот так - то всё будет нормально?

class Point {
  constructor(private x: number, private y: number) {}

  move(d: string): void
  move(d: number): void
  move(d: string | number) {
    this.x += +d || 0;
    this.y += +d || 0;
  }
}
const a = new Point(1,1);

a.move('1')

Тогда же опять проблема в примере - и это то что по моему мнение не очень удачно подобрано.


ну а последнее вообще странно

(a: number) => number
(a: string) => string

так как любой маломальский знающий TS напишет

<T>(a: T) => T

Основная "фича" данного подхода прерывание асинхронных операций, что в вашем х*к х*к и вродакшн не предусмотрено. Но на самом деле на дебаунсе код не многим бы отличался, просто везде пробрасывался бы абортконтроллер который при старте нового чейна обнулял предыдущий, но в данной статье цель автора в демонстрации приятнoй утилитки которая может комуто да облегчит жизнь.

Вместо тысячи слов :)
Вместо тысячи слов :)

[занудамод]Тут у меня придирка конкретно к примеру - зачем делать так, если нужно делать так. Если пример только для примера - то всегда будет такое. Советую пытаться находить "рабочий" код для таких вещей- так как если в начале возникают сомнения, то дальше быть солидарным с автором становиться всё сложнее и сложнее :) [/занудамод]

type TC = (a: number | string) => void
type TD = (a: string) => void

мне кажется впихивать 2 типа в 1 не самый лучший вариант, ведь всегда можно сделать перегрузку разве нет?

type TC = (a: number) => void;
type TD = (a: string) => void;

const foo: TC & TD = (a: string|number) => {
  if(typeof a === 'string') {
      // logic
  } else {}
  
}

Перефразирую - в 99.999% кейсов реальный JS код - валидный TS. Такой конструкт в реальной жизни не имеет права на существования и руки должны быть вырваны тем кто так пишет, совершенно нечитаемо :D. Зато отличный пример почему TS нужен - в данном случаем абсолютно нечитаемый код должен быть отформатирован хоть немного.

Однако даже так - дополнительные скобки - не есть `масса условностей и многословности, которые заставляет нас делать ts`

К сожалению это огромная проблемма большинства статей :( Любая фича на хайпе преподносится как панацея и вообще все всю жизнь делали плохо, а теперь наконец начнут нормально...

из последнего помню про сигналы в ангуляре начитался такого, что ночью кошмары снились :D

Я бы сказал даже много. JSDoc спокойно работает если насроена экосистема - можно JSDoc'ом полностью покрыть тайпчекинг(если использовать только простые типы конечно, до TS ему далеко). И выше описаный пример показал бы ошибку если бы мы в функцию передали стринг. Тут же скорее придирка к VSCode, но автор похоще не до конца разобрался в теме

так любой JS код это валидный TS. TS не заставляет вас ничего делать кроме транспайлинга. Есть вероятность что могут возникнуть ошибки компиляции, но они отключаются 1й строчкой в конфиге и вся ответственность ложится на разработчика

К теме топика это имее мало отношения - каждый организует свой код как хочет, можно хоть ифелсы, хоть свичи, хоть объект литерал - результат неизменится ;)

Да не - там самые лучшие фильтры звуковые. Минимальное количество искажений и посторонних шумов при ужасных микрофонах... К WebRTC притензий нет :)

Пока с друзьями искали рабочий способ разблокирования дискорда - сидели через вк.. К сожалению по качеству звука у дискорд нет аналогов :(

Если у человека из дома всё вынесут, то никому ничего не будет, пока в полицию не поступит заявление....

Удивительно сколько малопопулярных РТС началa 2к лахматых есть, которые лучше WC3. Сам до сих пор поигрываю в Warlords Battlecry 2, и мечтаю создать римейк :D

С пайтаном не работал, но трогал другие языки, и в яве самая ужасная среда разработки. Сам язык не плохой, но почемуто все проекты на нём едут будто на костылях. так что для меня однозначно пайтон(а теперь пошёл дальше работать над ява проектом потомучто в компании решили что ява наше всё :D)

  • С Local Storage понятно - устоявшийся стандарт хранилища на стороне клиента, но, как и всегда, есть нюансы - максимальный размер 5 Мб, а еще он синхронен и блокирует основной поток.

тут чутка ошибка - `local storage` вмещает 10mb, 5mb это `Session Storage`

Уф, сложно читать из-за переизбытка запятых. А так интересно, спасибо за статью ?

Information

Rating
Does not participate
Registered
Activity