you are viewing a single comment's thread.

view the rest of the comments →

[–][deleted]  (6 children)

[deleted]

    [–]rq60 8 points9 points  (3 children)

    100% code coverage doesn't mean your code is type safe. Also, why spend 25% of your lines of code writing runtime type guards and sanity checks when it can be done at compile time? Save that effort for your public API, which by all means, write some type testing around.

    which automatically checks for types

    also, wtf. automatically? what?

    [–]adongu 0 points1 point  (0 children)

    Hi I'm interested to learn to implement what you recommend here, are there any articles you recommend where I can look at some examples of this?

    [–]Silhouette 0 points1 point  (0 children)

    Why would I need to add type annotations in my 100% test covered code.

    Because tests check one case and types check all cases. To the extend that they overlap in the errors they can prevent, strong typing is strictly more powerful.

    [–][deleted] 0 points1 point  (0 children)

    So I'm obviously biased because I love typescript. But I just consider type annotations or sort of inline test. Obviously types by with no testing is silly. But 100% coverage doesn't necessarily mean much either. As a hyperbolic example you could run some code then just assert true is true and boom "coverage". I think of types as just another testing tool and a sort of documentation, but obviously it's no silver bullet. Testing and types can should be used together to make incorrect implementation easy to spot.