打字稿很棒,类型很棒,但是在某些情况下并不是那么容易。
我与打字稿斗争了几天,我不明白在整个项目中需要放置我的打字稿的位置。
我知道这些类型可以包含在*.ts
文件中,并且在编译时会删除它们。但是,如果我需要另一个模块中的type
,而不需要使用相对路径导入它。但这看起来很丑..如果我将该文件移到另一个位置,则我会破坏项目的一半。
因此,我想到了类型应该独立于其使用位置的想法。
我已经阅读了有关声明合并的信息,看起来这正是我想要的。
我的目标:
我想构建一个用于nodejs的库,该库将在另一个打字稿项目和(也许)纯JavaScript项目中使用。
很显然,我的库的输出将是*.js
和*.d.ts
文件。我不想发布*.ts
文件,因为我只想编译一次,并且可以在纯js项目中使用(我不想在这里带打字稿编译器)
一个文件(模块),包含单个功能。
该函数具有input
和output
。 input
和output
的类型写在d.ts
文件中
declare namespace library.foo {
type main = () => out
type out = {
name: string
}
}
在声明旁边,我放置了具有实现(foo.ts)的文件:
createFoo: library.foo.main = () {
return { name: "baz"}
}
运行tsc i
后,我在dist文件夹中看到foo.d.ts
的以下输出:
declare const createFoo: library.foo.main
我的手写声明文件留在源文件夹中,而不是dist文件夹中。
tsc中是否有任何选项可以发出所有类型的单个声明文件?该文件将与生成的.js
文件和所有.t.ds
文件一起发布