Elixir has had typespecs for a long time which can handle static type checking which is a lot like using typescript with vite. The compiler doesn’t type check, it relies on your IDE to do the dev time analysis.
https://hexdocs.pm/elixir/1.12/typespecs.html
They’ve recently started gradual typing which will feel a lot like typescript in the early days where you can type some things but you’ll frequently need the escape hatch ‘dynamic’ which is their ‘any’ to make it compatible with existing code
https://elixir-lang.org/blog/2023/09/20/strong-arrows-gradua...