Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/406.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Can';无法理解在typescript项目中存储自定义类型的位置_Javascript_Typescript - Fatal编程技术网

Javascript Can';无法理解在typescript项目中存储自定义类型的位置

Javascript Can';无法理解在typescript项目中存储自定义类型的位置,javascript,typescript,Javascript,Typescript,Typescript非常棒,类型非常棒,但对于某些场景来说并不容易 我和typescript斗争了几天,我不知道在哪里放置需要在整个项目中使用的类型 我知道类型可以包含在*.ts文件中,并且在编译时会被删除。但是,如果我需要在另一个模块中键入该,那么我需要使用相对路径导入它。但是看起来很难看。。如果我把那个文件移到另一个位置,我会破坏项目的一半 所以我同意这样的观点,类型应该独立于使用它的地方 我读过关于声明合并的文章,看起来这就是我想要的 我的目标: 我想构建一个库(用于nodejs),它将用

Typescript非常棒,类型非常棒,但对于某些场景来说并不容易

我和typescript斗争了几天,我不知道在哪里放置需要在整个项目中使用的类型

我知道类型可以包含在
*.ts
文件中,并且在编译时会被删除。但是,如果我需要在另一个模块中键入该
,那么我需要使用相对路径导入它。但是看起来很难看。。如果我把那个文件移到另一个位置,我会破坏项目的一半

所以我同意这样的观点,类型应该独立于使用它的地方

我读过关于声明合并的文章,看起来这就是我想要的

我的目标:

我想构建一个库(用于nodejs),它将用于另一个typescript项目和(可能)纯javascript项目

显然,我的库的输出将是
*.js
*.d.ts
文件。我不想发布
*.ts
文件,因为我想编译它们一次,而且它可能会用于纯js项目(我不想把typescript编译器带到那里)

一个文件(模块),包含单个函数。 该函数具有
输入
输出
input
output
的类型写入
d.ts
文件中

declare namespace library.foo {

type main = () => out

type out = {
   name: string
}

}
在声明旁边,我放置了带有实现的文件(foo.ts):

运行
tsc i
后,我在dist文件夹中看到
foo.d.ts
的输出:

declare const createFoo: library.foo.main
我的手写声明文件已留在源文件夹中,但不在dist文件夹中


tsc中是否有任何选项将发出包含所有my类型的单个声明文件?该文件将与生成的
.js
文件和所有
.t.ds
文件一起发布

我不明白为什么类型或TypeScript对这个问题有任何区别。你没有需要在整个项目中使用的功能吗?你是怎么处理的?同样的解决方案也适用于类型。@artem for me类型是域逻辑。它们可以用在任何函数中,由任何函数产生。类型从一个函数转到另一个函数。所以类型应该独立于具体功能。若我移动或删除一个函数实现,它不应该破坏项目
declare const createFoo: library.foo.main