Hacker News new | past | comments | ask | show | jobs | submit login

This myth really needs to die. Sorry for the harsh language, it's the TS team's fault for not taking this ongoing PR blunder seriously.

You can (and always could) use almost any 3rd party lib with literally one line of code:

    var somelib: any;
Done. No need to ever touch a .d.ts file.

Sure, no type safety on the lib. But isn't that where we started, anyway?

This should be put on a giant banner on the TS homepage.




I would put `declare` in front of that to avoid generating an unused variable.

And for required modules, you'd need to shim require in similar fashion and use var instead of import.

    declare function require(module: string): any;
    var somelib = require("somelib");


Or you can use import and the simple pattern of:

    declare module "somelib" {
        var somelib: any
        export = somelib
    }


I'm not bothered by silly things like tone or harsh language, especially for such amazing news. I've actually written my fair share during the summer and I never knew about this.

Thank you! How well would this work with an editor and typescript plugins? Say the amazing typescript-atom, I would guess the editor would crap its pants, no?


A better way would be to do like Arnavion said, for really global libraries you should create a .d.ts file and put this line in it:

    declare var somelib: any;
Done. Now the compiler and everything else will know that there's a global variable called `somelib` that does not have a specific type, and no matter how you use that variable, it's ok, you know what you're doing.


No problem. As others mentioned; declare var is the way to go (my TS is getting rusty, apparently :) ).

Editors have no problem with it. They will simply see it as an "any" var. Completely compatible.

I wrote quite a bit of TS and this was how I used most obscure libraries. I can't be arsed to keep those stupid .d.ts files up to date and I trust the API docs. It's my own code I wanted to vet. Works like a charm.

Judicious use of declare var any, and ignoring compiler errors, is what really makes TS reality-compatible.


Why not use VSCode instead of Atom? It's (relatively) performant, it has first class support for TypeScript, and if you ever want to hack on it, it's free/open source software (MIT) and written in TypeScript itself.


Good point. Another option for libraries you use less heavily is to only write definitions for the parts of the library you actually use.

You're not using the entire options parameter or https://github.com/flot/flot/blob/master/API.md ? Don't declare it - only add the properties you do use.

You're only using 3 methods from 1 class in aws-sdk ? Only declare that 1 class and 3 methods in your aws-sdk.d.ts




Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: