如何通过@types为scoped/namespaced包安装TypeScript声明?

Dan*_*ser 11 types node.js npm typescript definitelytyped

我使用的是打字稿,我想用一个作用域包(例如@foo/bar,@babel/core等)不出货了自己的类型声明.

我试过运行类似的东西

npm install @types/@foo/bar
Run Code Online (Sandbox Code Playgroud)

但似乎没有.

有没有办法让.d.ts这些包进入@types范围?如果需要,有没有办法在DefinitelyTyped上编写我自己的作用域包?

Dan*_*ser 11

有没有办法让.d.ts这些包进入@types范围?

是的有办法!这有点不直观.

npm不允许@在其名称中包含范围包,因此这些名称被修改为使用两个下划线代替@.

举例来说,如果要为包安装类型声明,则@foo/bar需要运行

npm install @types/foo__bar
Run Code Online (Sandbox Code Playgroud)

如果需要,有没有办法在DefinitelyTyped上编写我自己的作用域包?

是! 从绝对类型的README.md:

@foo/bar应该包含范围包的类型types/foo__bar.请注意双下划线.

  • 我喜欢这个答案,但作为一个吹毛求疵的人,也许应该注意的是,两个下划线不是“代替@”——它不是`@types/__foo/bar`。两个下划线替换了“@”和“/”。换句话说,“@”被删除,“/”被“__”替换:“@scope/package”=>“scope__package”。 (2认同)