TGViewer
dd if=/dev/stuff of=/dev/tg dd if=/dev/stuff of=/dev/tg @randomstuffilike · 2.48K subscribers
Post #445 3.38K
Набросал гист с «сессионными типами нищеброда™» для TypeScript.

Сессионные типы — это способ описания протоколов клиент-серверного взаимодействия, не позволяющий использовать протокол ненадлежащим образом. Основная информация о них обитает здесь, там же лежат реализации сессионных типов для разных языков — от AST и Haskell до Scala и Rust.

В идеальном случае, сессионные типы должен поддерживать компилятор. На практике же клепаются костыли в виде сторонних чекеров (как в упомянутом ранее Effpi или в Gong), ну или проверяют в рантайме.

У нас в тайпскрипте из выразительных возможностей, позволяющих хоть сколь-нибудь удобно выражать сессионные типы, нет ничего — даже рекурсивных типов, лол. Тем не менее, заставить компилятор генерировать тип дуального канала мне удалось, равно как и проверять совместимость клиента и сервера.
Gist Session types for TypeScript Session types for TypeScript. GitHub Gist: instantly share code, notes, and snippets.
More from @randomstuffilike
  1. Mar 13, 2026Задолбался, что приходится быть chief software sloperator на работе, поэтому в терапевтиче…
  2. Feb 28, 2024Моделирование доменных типов на расте: https://mmapped.blog/posts/25-domain-types.html
  3. Dec 5, 2023Слайды доклада Томаса Микулы «Monads Are Not About Sequencing»: https://continuously.dev/p…
  4. Nov 9, 2023Design Guidelines for Domain-Specific Languages Очень хороший пейпер, предлагающий 26 гайд…
  5. Oct 19, 2023И чуть более развернутый пост от автора: https://zackoverflow.dev/writing/flappy-bird-in-t…
  6. Oct 19, 2023https://twitter.com/zack_overflow/status/1715042340514017559 — Flappy Bird на тайплевеле т…
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 →