【问题标题】:What is the scope of .d.ts files.d.ts 文件的范围是什么
【发布时间】:2022-01-26 04:51:46
【问题描述】:

所以我在 Typescript Next.js 项目中使用 react-table。这个包由默认不包含但必须在主useTable钩子中启用的模块(如排序、分页等)组成。默认情况下,这些类型的设置方式不包括与模块相关的属性。

我遵循以下说明:https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/react-table

它说要创建一个react-table-config.d.ts 文件并将其放在我的源目录中的某个位置,然后将其修改为仅包含我需要的模块。

但是,虽然我可能在一个组件中需要一些模块,但在另一个组件中可能不需要它。所以我想知道这些文件是否具有全局范围,或者是否有可能为两个单独的组件提供两个这样的文件。

例如,如果我有以下目录结构:

src
|
|-- components
|   |
|   |-- sorted-table
|   |   |
|   |   |-- index.tsx
|   |   |
|   |   |-- react-table-config.d.ts
|   |
|   |-- paginated-table
|   |   |
|   |   |-- index.tsx
.   .   |
.   .   |-- react-table-config.d.ts
.   .
``` 

【问题讨论】:

    标签: reactjs typescript scope next.js .d.ts


    【解决方案1】:

    您只需要为package.json 中定义的每个包创建一个d.ts 文件。

    然而,虽然我可能在一个组件中需要一些模块,但在另一个组件中可能不需要它。所以我想知道这些文件是否具有全局范围,或者是否有可能为两个单独的组件提供两个这样的文件。

    是的,它具有全局范围,在一个项目中不可能有两个 d.ts 用于同一个包。你可以把它放在你项目的任何地方,只要它在 tsconfig filesinclude 里面。

    TypeScript 将查找在 tsconfig.json filesincludeexclude 下指定的所有 d.ts 文件,并将 declare 映射到适合您的包。

    【讨论】:

      【解决方案2】:

      我认为如果像这样使用它放在哪里并不重要

      declare global{
      //write any interface,type,etc
      }
      // in the end of the file
      export {};
      

      现在您可以使用文件中的任何内容而无需导入它

      【讨论】:

        猜你喜欢
        • 2018-11-01
        • 2015-07-04
        • 1970-01-01
        • 2016-08-19
        • 2011-11-11
        • 2020-10-18
        • 2017-04-22
        • 1970-01-01
        • 2023-03-17
        相关资源
        最近更新 更多