Pull to refresh

Comments 6

Мне очень интересно узнать, как другие специалисты JavaScript решают подобные проблемы.

Пишут на typescript без any и с тайпгардами на всех входах-выходах из кода TS.
Субъективщина конечно, но вот лично мне это нравится куда больше обнимашек с дебаггером.

ЗЫ: Те, кто слабее духом, но всё же достаточно сильны, чтоб не обниматься с дебаггером — пишут тесты.
Еще может быть такое, что объект проедет по цепочке JSON.stringify и JSON.parse, растеряв по дороге часть пропертей, а потом, еще и смимикрирует по прототипу под первоначальный объект через услужливую соломку в виде Object.create. В итоге у тебя выродится где-то внутрях костыльного фреймворка (правда, будет не так концентрированно, а размажется по 20-30 методам):
function lookBroIveLostSomeProperty(someObject: SomeObject): SomeObject {
  const {
    someProperty,
    ...oO
  } = JSON.parse(JSON.stringify(someObject));

  return Object.assign(Object.create(SomeObject.prototype), oO);
}

А я, когда мне надо было понять, где дёргается свежесозданный объект, просто подменял его на его копию, завёрнутую в Proxy. Поставил внутри геттера/сеттера (в зависимости от конкретной задачи — мне надо было внутри геттера) либо debugger, либо console.trace, — и всё как на ладони, даже в минифицированном коде.

Кстати да, если надо разобраться в километрах лапши — подставить вместо переменных Proxy (или там observable из MobX, которые представляют собой ту же прокси) это отличное решение.
Другие специалисты JavaScript просто не засоряют глобальное пространство имен.
Другие специалисты. Только после вашего комментария обратил внимание на эту чудесную фразу)
Sign up to leave a comment.

Articles