热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何配置使用从PureScript编译的JavaScript模块的TypeScript项目?

如何解决《如何配置使用从PureScript编译的JavaScript模块的TypeScript项目?》经验,应该怎么弄,您有好建议吗?

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)时,由于它们不使用绝对路径requiretsc导致的调用失败- 在这种情况下require("People")应该require("./People")如此。使importTypeScript中的语句成为相对的将取消关联。

我很难达到以下目标:

维护从TypeScript导入的所有PureScript模块的TypeScript类型。

确保TypeScript类型检查。

确保require对PureScript模块的调用在运行时解决。

使用npm包分发TypeScript类型,以便TypeScript使用者也可以使用这些类型。

如果您有从TypeScript要求PureScript模块并通过npm分发所有这些的经验,我将不胜感激!


推荐阅读
  • 本文介绍了JavaScript进化到TypeScript的历史和背景,解释了TypeScript相对于JavaScript的优势和特点。作者分享了自己对TypeScript的观察和认识,并提到了在项目开发中使用TypeScript的好处。最后,作者表示对TypeScript进行尝试和探索的态度。 ... [详细]
  • Node.js学习笔记(一)package.json及cnpm
    本文介绍了Node.js中包的概念,以及如何使用包来统一管理具有相互依赖关系的模块。同时还介绍了NPM(Node Package Manager)的基本介绍和使用方法,以及如何通过NPM下载第三方模块。 ... [详细]
  • loader资源模块加载器webpack资源模块加载webpack内部(内部loader)默认只会处理javascript文件,也就是说它会把打包过程中所有遇到的 ... [详细]
  • 技术周报·2021-05-07-小编推荐向现代Javascript转型原文标题:Publish,ship,andinstallmodernJavaScriptforfaste ... [详细]
  • 如何在Vue项目中安装和使用VUX组件?
    vux2模板fork自webpack模板,基本和官方同步。1、默认为webpack2模板npminstallvue-cli-g如果还没安装vueinitairyla ... [详细]
  • 前端简史之纵横:Node东出
    引💡Ajax的出现,带来了jQuery时代,而jQuery时代也伴随着Node风暴淡淡退出了历史舞台。如果说Ajax给前端带来了从网页静 ... [详细]
  • 小编给大家分享一下TypeScript2.7有什么改进,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收 ... [详细]
  • 前言小伙伴们大家好。从今天开始我们将从 ... [详细]
  • 从零基础到精通的前台学习路线
    随着互联网的发展,前台开发工程师成为市场上非常抢手的人才。本文介绍了从零基础到精通前台开发的学习路线,包括学习HTML、CSS、JavaScript等基础知识和常用工具的使用。通过循序渐进的学习,可以掌握前台开发的基本技能,并有能力找到一份月薪8000以上的工作。 ... [详细]
  • node.jsrequire和ES6导入导出的区别原 ... [详细]
  • npminstall-Dbabelcorebabelpreset-envbabelplugin-transform-runtimebabelpolyfillbabel-loader ... [详细]
  • ①安装node.js②按照下面命令行执行node安装参照网址:https:www.cnblogs.compearl07p6247389.htmlwebpack讲解安 ... [详细]
  • html css在线便宜,在线HTML、CSS和JS工具汇总
    本文提供了在线HTML、CSS和JS工具汇总,它们都是直接在浏览器上可以使用的在线工具,基本上都是比较简单操作的,只适合简单的调试工作&# ... [详细]
  • TS-入门学习笔记TypeScript是JavaScript的一个超集,主要提供了类型系统和对ES6的支持。与js相比,最大的有点是类型系统的引入,由于js本身是弱类型语言,所以天 ... [详细]
  • 这是一篇参考学习使用的文章,但是无法执行通过最近,实验室在做一个适配于手机的web项目(可以说是一个混合应用开发),最后需要打包成apk程序,作为一名对移动开发的研究者,这个打包的 ... [详细]
author-avatar
伤心脑残猪_940
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有