TGViewer
Cododel.dev | Александр Cododel.dev | Александр @cododel_dev · 229 subscribers
Post #247 109
Типизированные Датаклассы-модели данных в TypeScript

Появились сложности в работе с Playwright на Python
А в JS api - есть подходящие экспериментальные функции для работы с запросами
Да и с аснихронностью работать мне гораздо приятнее в JS

И первое же, с чем я столкнулся - в Python есть шикарнейшая библиотека Pydantic, а на крайний случай, для работы с данным - предустановленные dataclasses
В JS же такого счастья нет, в виде удобного определения моделей данных, с возможностью добавить к ним методы и вычисляемые значения

Я перепробовал около 10 вариантов, привлек ChatGPT 4o
Ничего не вышло, но я вынес из этого много мыслей и с небольшим перерывом смог реализовать довольно неплохой интерфейс
Самая главная проблема во всех, даже самых крутых интерфейсах - наршуение принципа DRY, так как приходилось определять и properties у модели, и задавать еще дополнительно схему входных данных.

Сейчас достаточно только properties указать и конструктор, в typescript это можно сделать без повторений, через shorthand constructor. (см скрин)
Реализовано это через реверс метода конструктора, чтобы получить список именованных аргументов, а вторая функция извлекает из объекта значения в нужном порядке и переает их в конструктор.
Решение довольно неплохое, ведь нужна имплементация **kwargs из python, чтобы пробросить объект как именованные аргументы функции, но такого в JS нет, хотя решение все же нашлось)

Например, получая данные по api - мы просто передаем их в fromJSON или fromObject метод:

async function getRandomProxy() {
const res = await this._api.get(`/proxy/random`);
return Proxy.fromObject(res.data);
}


А определение модели датакласса смотрим на скрине.
Нигде не выкладывал, если понадобится кому - писать в комменты.
More from @cododel_dev
  1. Sep 30, 2026OpenAI: Мы порезали лимиты в 2 раза, и релизнули Dot ботов на Astra High Me: найди мем
  2. Sep 30, 2026Выехал из дома на велике Дорогу назад помню слабо. Единственный минус телефона по итогу -…
  3. Sep 21, 2026Ого какие вакансии бывают Больше удивлен что предложения на почти пустой линкдин приходят…
  4. Sep 15, 2026Все что нужно знать сегодня о “Работать будет только на английском” 😐
  5. Sep 15, 2026Post #1153
  6. Sep 14, 2026200 🤝 Всех новоприбывших обнял-приподнял Умного пока ничего не придумал, чем хотел бы сро…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →