How can I install TypeScript declarations for scoped/namespaced packages via @types?
Asked Answered
A

1

16

I'm using TypeScript and I want to use a scoped package (e.g. @foo/bar, @babel/core, etc.) that doesn't ship its own type declarations.

I've tried to run something like

npm install @types/@foo/bar

but it doesn't seem to be available.

Is there any way to get these .d.ts for these packages into the @types scope? Is there a way to write my own scoped packages on DefinitelyTyped if I need to?

Alnico answered 14/11, 2017 at 23:5 Comment(0)
A
24

Is there any way to get these .d.ts for these packages into the @types scope?

Yes there is a way! It's just a little unintuitive.

npm doesn't permit scoped packages to contain @ in their name, so these names are mangled to use two underscores in place of the @.

So as an example, if you want to install type declarations for the package @foo/bar, you'll need to run

npm install @types/foo__bar

Is there a way to write my own scoped packages on DefinitelyTyped if I need to?

Yes! From the Definitely Typed README.md:

Types for a scoped package @foo/bar should go in types/foo__bar. Note the double underscore.

Alnico answered 14/11, 2017 at 23:9 Comment(2)
Is there a way to write my own scoped packages outside DefinitelyTyped if I need to? -- DefinitelyTyped is just too slow to accept pull requests...Grinnell
I like this answer but as a nitpick maybe it should be noted that the two underscores are not "in place of the @" - it's not @types/__foo/bar. The two underscores replace both the @ and the /. In other words, the @ is removed and the / is replaced by __: @scope/package => scope__package.Fredkin

© 2022 - 2024 — McMap. All rights reserved.