当前位置: 首页 > 知识库问答 >
问题:

前端 - @types/xxx 的作用是用于进行多个项目共用定义的type, interface对吗?

齐学文
2024-08-19

请问一下:
我们在很多地方有看到 安装 @types/xxx 之类的信息。

请教两个问题:
1、@types/xxx 的作用是用于进行多个项目共用定义的type, interface对吗?
2、请问哪里有好的教程用于学习如何封装@types/xxx 然后进行打包上传呢?

共有2个答案

廖诚
2024-08-19

@/types/xxx 只针对以前那些老的js项目,为了给TS项目增加类型提示用的。如果npm 包本身就是TS开发的,那么就不需要@/types/xxx

也没啥好学的,就是一份文档,写好后按照npm规范提交到npm库就行

雷逸仙
2024-08-19

问题 1 解答

答案:不完全正确。@types/xxx 的主要作用是提供 TypeScript 类型定义(typings)给那些已经存在的 JavaScript 库,这些库本身并没有包含 TypeScript 类型声明。这有助于在 TypeScript 项目中使用这些 JavaScript 库时获得类型检查和更好的开发体验。虽然这可以在多个项目中共享使用相同的类型定义,但其主要目的并非是为了创建跨项目的共享类型定义,而是为了使用已有的库时的类型兼容性。

问题 2 解答

答案

学习如何封装 @types/xxx 并进行打包上传的教程相对不那么直接,因为大多数情况下,TypeScript 社区和开发者会为流行的库和框架贡献类型定义,而不是每个开发者都从零开始创建它们。然而,以下是一些资源和建议,可以帮助你开始这个过程:

  • 阅读 TypeScript 官方文档:特别是关于声明文件(Declaration Files)的部分,它详细介绍了如何为现有 JavaScript 库编写类型定义。

    • TypeScript 官方文档 - 声明文件
  • 查看现有的 @types:在 DefinitelyTyped 仓库中查看已有的类型定义包,这是一个大型的类型定义集合,包含了数千个 JavaScript 库的 TypeScript 类型定义。通过查看和学习这些已有的定义,你可以了解到如何为你的库或框架编写类型定义。
  • 创建你自己的类型定义包

    1. 在 DefinitelyTyped 仓库中克隆或创建你的类型定义。
    2. 遵循其贡献指南和模板来编写你的类型定义。
    3. 使用 dtslint 工具来测试你的类型定义。
    4. 提交一个拉取请求(Pull Request),等待审核和合并。
  • 发布你自己的 npm 包

    • 如果你的类型定义是为一个私有库或特殊场景设计的,你也可以考虑将它们作为一个 npm 包发布,但注意通常这不是首选做法,因为维护私有类型定义包可能会变得复杂和繁琐。
    • 对于这种情况,你只需在 package.json 中正确配置类型定义文件的路径(通常通过 "types" 字段),然后将包发布到 npm 即可。

注意:编写和贡献类型定义需要一定的 TypeScript 知识和对目标库的深入了解。如果你是首次尝试,建议从简单的库开始,并逐步扩展到更复杂的项目。

 类似资料:
  • 问题内容: 我有一个ListView,其行中应具有以下布局: 应该是静态的,但每隔几秒钟就会更改一次。 我通过填充,将其传递给并在每次数据更改时进行设置来实现它: 我的问题是我不知道如何以上述格式显示数据。 提前致谢。 问题答案: 将此添加到你的布局文件夹 使你的主要xml布局如下 这是你的适配器 你的Java活动

  • 比如props定义了这么一个属性,那在外层传值的时候可以minDate:undefined传入进来吗,为什么?

  • 这些自己做的项目可以在面试加分嘛?前面两个是纯css画的 其他全是vue

  • 我正在使用POSIX共享内存和未命名信号量实现客户机服务器。服务器可以同时处理多个客户端。该代码适用于单个客户端,但不适用于多个客户端。POSIX操作是用,

  • 问题内容: 我有一个UIButton的自定义子类: 它是IBDesignable,并且已将其设置为情节提要中按钮之一的自定义类。我想使其通用,以便该数组不必是String对象之一。所以,我尝试了这个: 但是,我不确定现在如何在IB中将其设置为类。我尝试放置或,但是Interface Builder只是删除了尖括号部分并得到以下编译错误: 有没有使用通用自定义类的方法,或者不支持该类? 问题答案:

  • 请问在TypeScript中, 我们定义一个类的时候,这个类是否也是type呢? 比如我们: 类型注解的时候,可以注释为Teacher: