作者:伤心脑残猪_940 | 来源:互联网 | 2023-01-16 02:09
TL; DR我想为已编译的PureScript模块创建TypeScript类型,并将其分布在我的npm包中。我很乐于手动维护这些类型,只是无法弄清楚需要在tsconfig.json(上下)和package.json中放入什么。
我有一个项目,其中的核心功能是使用TypeScript CLI在PureScript中实现的,所有这些最终都通过npm以Javascript的形式分发。我用一个简单的布局创建了一个类似的项目:
.
??? cli # TypeScript CLI project
? ??? main.ts
? ??? tsconfig.json
?
??? output # Compiled PureScript modules
? ??? People
? ??? externs.json
? ??? index.js
?
??? src # PureScript source
? ??? People.purs
?
??? types # TypeScript types for PureScript modules
??? People.d.ts
在src/People.purs
我定义的核心功能:
module People where
type Person = { name :: String }
david :: Person
david = { name: "David "}
在“ types/People.d.ts
我为PureScript模块定义TypeScript类型”中,以便可以从TypeScript中安全地使用它们:
.
??? cli # TypeScript CLI project
? ??? main.ts
? ??? tsconfig.json
?
??? output # Compiled PureScript modules
? ??? People
? ??? externs.json
? ??? index.js
?
??? src # PureScript source
? ??? People.purs
?
??? types # TypeScript types for PureScript modules
??? People.d.ts
最后,在中cli/main.ts
,我要导入已定义的TypeScript类型的已编译PureScript模块:
module People where
type Person = { name :: String }
david :: Person
david = { name: "David "}
我可以构建它,但是当我尝试运行最终的Javascript(node cli/main.js
)时,由于它们不使用绝对路径require
而tsc
导致的调用失败- 在这种情况下require("People")
应该require("./People")
如此。使import
TypeScript中的语句成为相对的将取消关联。
我很难达到以下目标:
维护从TypeScript导入的所有PureScript模块的TypeScript类型。
确保TypeScript类型检查。
确保require
对PureScript模块的调用在运行时解决。
使用npm包分发TypeScript类型,以便TypeScript使用者也可以使用这些类型。
如果您有从TypeScript要求PureScript模块并通过npm分发所有这些的经验,我将不胜感激!