gpt4 book ai didi

typescript - 在 Typescript 中导出和发布所有类型和接口(interface)

转载 作者:行者123 更新时间:2023-12-03 23:02:59 42 4
gpt4 key购买 nike

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

mylib
├──src
│ ├──types
| | └──mytypes.ts
│ └──index.ts
├──package.json
└──tsconfig.json
//index.ts

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

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

//mytypes.ts

export interface MyInterface {
a:string
}

我通过设置 tsconfig.json 生成声明文件参数 "declaration":"true" .
现在我想使用这个库作为另一个库的依赖。
mylib
yrlib
├──src
│ └──index.ts
├──package.json
└──tsconfig.json
//yrlib/package.json
{
...
"dependencies":{
"mylib":"file:../mylib/"
}
}

//yrlib/src/index.ts

import * as mylib from 'mylib';

let a:mylib.MyInterface = ...
// ~~ Namespace has no export member for MyInterface
我得到 mylib 的自动完成功能因为它是导出的。
我的问题是如何查看 mylib的所有类型和接口(interface)?模块内 yrlib ?
因为它们可以是数百个并且在所有不同的文件和文件夹中。
我应该一个一个地导出它们吗?最佳做法是什么?
有没有办法一次导出所有类型?
以及如何 "typying":"dist/index.d.ts"package.json适合这一切吗?应该是一个文件中的所有类型?为什么 Typescript 不生成此文件?
我应该使用包含所有内容的命名空间吗?我找不到关于这个主题的完整解释。

最佳答案

我最近遇到了同样的问题,为了将您的类型空间代码(例如:类型、接口(interface))与您的值空间代码(例如:函数、类、变量)一起发布,我发现的唯一方法是导出一个 namespace包含一切。
另一个奇怪的事情是,为了将导入的东西导出到 namespace,语法是:

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

export namespace mylib {
export import mod = mymod;
export import types = mytypes;
}
使用 export import 语法。
不幸的是,这在我的 eslinter 中会以警告/错误的形式解决,因为它显然将 modtypes 读取为 unused-vars
我不明白为什么文档中没有对此主题的完整解释。

关于typescript - 在 Typescript 中导出和发布所有类型和接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64405032/

42 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com