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