| ▲ | voidUpdate 9 hours ago | ||||||||||||||||
While python isn't type safe, you can use Pylance or similar in combination with type hinting to get your editor to yell at you if you do something bad type-wise. I've had it turned on for a while in a large web project and it's been very helpful, and almost feels type-safe again | |||||||||||||||||
| ▲ | debugnik 6 hours ago | parent | next [-] | ||||||||||||||||
It just isn't good enough. Anytime Pyright gives up in type checking, which is often, it simply decays the type into one involving Any/"Unknown": Without strict settings, it will let you pass this value as of any other type and introduce a bug. But with strict settings, it will prevent you from recovering the actual type dynamically with type guards, because it flags the existence of the untyped expression itself, even if used in a sound way, which defeats the point of using a gradual checker. Gradual type systems can and should keep the typed fragment sound, not just give up or (figuratively) panic. | |||||||||||||||||
| ▲ | VorpalWay 7 hours ago | parent | prev [-] | ||||||||||||||||
> I've had it turned on for a while in a large web project and it's been very helpful, and almost feels type-safe again In my experience "almost" is doing a lot of heavy lifting here. Typing in python certainly helps, but you can never quite trust it (or that the checker detects things correctly). And you can't trust that another developer didn't just write `dict` instead of `dict[int, string]` somewhere, which thus defaults to Any for both key and value. And that will type check (at least with mypy) and now you lost safety. Using a statically typed language like C++ is way better, and moving to a language with an advanced type system like that of Rust is yet another massive improvement. | |||||||||||||||||
| |||||||||||||||||