Hacker News new | ask | show | jobs
by colejohnson66 1558 days ago
That's a major limitation of JavaScript. For example:

    // TypeScript
    function add(a: number, b: number): number { return a + b; }

    // tsc output (JavaScript)
    function add(a, b) { return a + b; }

    // (ab)use by someone using my lib without TypeScript
    add("abc", "def");
Now, addition is a contrived example because it'll still work with strings, but the point is that such usage violates my code contract because the contract was deleted during compilation. It's possible to do this:

    function add(a: number, b: number): number {
        if (typeof a !== 'number' || typeof b !== 'number')
            throw 'no';
        return a + b;
    }
But that's needlessly verbose, and eslint will complain about useless code. If enforceable type annotations could be added to JavaScript, that'd be a huge plus.
1 comments

As I understand this proposal, it would not add what you're talking about. Just for clarity.