在 Typescript 中导出和发布所有类型和接口

ndr*_*dr4 4 typescript

我正在尝试发布一个打字稿库。我不清楚如何公开所有类型和接口。这是我的设置:

mylib
  ???src
  ?  ???types
  |  |  ???mytypes.ts
  ?  ???index.ts
  ???package.json
  ???tsconfig.json
Run Code Online (Sandbox Code Playgroud)
mylib
  ???src
  ?  ???types
  |  |  ???mytypes.ts
  ?  ???index.ts
  ???package.json
  ???tsconfig.json
Run Code Online (Sandbox Code Playgroud)
//index.ts

import {MyInterface} from './types/mytypes.ts';

const my_main_name = {
  myfunc: function(param1:MyInterface):void{
    console.log(param1.a);
  }
}

Run Code Online (Sandbox Code Playgroud)

我通过设置tsconfig.jsonparam生成声明文件"declaration":"true"

现在我想使用这个库作为另一个库的依赖。

mylib
yrlib
  ???src
  ?  ???index.ts
  ???package.json
  ???tsconfig.json
Run Code Online (Sandbox Code Playgroud)
//mytypes.ts

export interface MyInterface {
  a:string
}

Run Code Online (Sandbox Code Playgroud)
mylib
yrlib
  ???src
  ?  ???index.ts
  ???package.json
  ???tsconfig.json
Run Code Online (Sandbox Code Playgroud)

mylib因为它是导出的,所以我得到了自动完成。

我的问题是如何查看mylib模块内部的所有类型和接口yrlib

因为它们可以是数百个并且位于所有不同的文件和文件夹中。

我应该一一导出所有这些吗?最佳做法是什么?有没有办法一次导出所有类型?

而如何"typying":"dist/index.d.ts"package.json这一切发作?应该是一个文件中的所有类型吗?为什么 Typescript 不生成这个文件?

我应该使用包含所有内容的命名空间吗?我找不到关于这个主题的完整解释。

nbl*_*bl7 5

我最近遇到了同样的问题,我发现将类型空间代码(例如:类型、接口)与值空间代码(例如:函数、类、变量)一起发布的唯一方法是导出namespace包含一切。

另一个奇怪的是,为了导出到导入的namespace东西,语法是:

import * as mymod from './mymod';
import * as mytypes from './mytypes';

export namespace mylib {
  export import mod = mymod;
  export import types = mytypes;
}
Run Code Online (Sandbox Code Playgroud)

export import语法。

不幸的是,这在我的 eslinter 中将在警告/错误中解决,因为它显然读取modtypes作为unused-vars.

我不明白为什么文档中没有对这个主题的完整解释。