I'm not a big fan of type annotations because the code easily turns unreadable which is not what I expect from Python code.
But for larger projects type checking is valuable. Types introduce additional contracts between components to manage and control the overall complexity of the system.
For small scripts and self contained applications I regard type checking as a burden. For larger projects not.
Pylint is a valuable tool to detect typical errors but does not check types. Regard a function which returns the sum of two given arguments. It will work with both arguments being integers and for both being strings. PyLint will not complain here, but if your code uses this result you might trigger errors much later during progam execution which are hard to detect or understand without type checking.
> But for larger projects type checking is valuable.
Wrong solution to the wrong problem. Break that too large for duck typing fucking mess into smaller independent components with well defined and enforced interfaces.
But for larger projects type checking is valuable. Types introduce additional contracts between components to manage and control the overall complexity of the system.
For small scripts and self contained applications I regard type checking as a burden. For larger projects not.
Pylint is a valuable tool to detect typical errors but does not check types. Regard a function which returns the sum of two given arguments. It will work with both arguments being integers and for both being strings. PyLint will not complain here, but if your code uses this result you might trigger errors much later during progam execution which are hard to detect or understand without type checking.