首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何为名称包含'@‘的模块提供TypeScript类型声明?

如何为名称包含'@‘的模块提供TypeScript类型声明?
EN

Stack Overflow用户
提问于 2018-04-22 05:50:48
回答 2查看 1.3K关注 0票数 1

我试图通过为所有非类型化依赖项提供类型声明(.d.ts)文件来使TypeScript编译器满意。然而,其中一些是流行包的自定义分支,或者像these这样的包,它们是更大项目的一部分,并共享相同的@<project-name>命名空间。在这些情况下,它们的名称将包含@字符和斜杠,例如@absinthe/socket

在这种情况下,我如何在.t.ds文件中声明我的类型化模块?对于上面的示例,我尝试了declare module '@absinthe/socket'declare module 'absinthe__socket' (根据TypeScript编译器的建议),但都不起作用。

EN

回答 2

Stack Overflow用户

发布于 2018-04-23 16:19:06

事实证明,我在定义文件中错误地导入了另一个模块,但超出了declare module @absinthe/socket作用域。这导致TS编译器将该文件视为实现,而不是声明文件。在模块声明中移动导入,如下所示

declare module '@absinthe/socket' { import { Socket as PhoenixSocket } from 'phoenix' … }

解决了我的问题。因此,换句话说,在.d.ts文件中声明自己的类型时,语法@absinthe/socket工作得很好。只有在从DefinitelyTyped (或其他NPM源)获得这样的声明时,才需要使用双下划线语法(absinthe__socket)。

票数 2
EN

Stack Overflow用户

发布于 2018-04-22 10:56:04

Here's another question which describes how to install namespaced packages through @types.

不幸的是,npm不允许限定作用域的包在其名称中包含@,因此这些名称被篡改为使用两个下划线来代替@。

因此,如果您希望为@foo/bar包安装类型声明,则需要运行

npm install @types/foo__bar

如果它们不适用于您想要的包,则可以使用make sure your .d.ts file is properly included under your tsconfig.json。例如,如果您有"include": ["src/**/*"],请确保.d.ts文件位于src文件夹中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49960512

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档