(评论)
(comments)
原始链接: https://news.ycombinator.com/item?id=38167363
关于 shell 上下文中的 TypeScript 与纯 JavaScript 的讨论,我个人的观点是,我认为这场争论来自于对 TypeScript 在浏览器之外的目标环境方面的灵活性的无知(即,存在生成可执行文件和静态二进制文件的 TypeScript 编译器),以及 将 TypeScript 错误解释为编译为 JavaScript 的转译器。 TypeScript 可以转编译为 JavaScript 以外的目标。
TypeScript 允许定位非解释的环境,而静态编译正是针对诸如支持加载 TypeScript 模块并为 import 语句提供静态模块解析环境的脚本 shell 环境或脚本脚本引擎等情况而存在。 TypeScript 编译器根据执行期间配置标志的值,以 CommonJS 格式或 ES 模块格式生成结果模块代码,从而允许配置使用 CommonJS 约定打包的发行版,或使用 Webpack 配置约定配置的发行版。
一般来说,任何标记的可静态分析的配置都可以作为编译目标环境。 附加标志控制是否生成附加元数据(例如文件名属性或有关原始源代码中源位置的元数据的源映射属性)。
此外,还有一个专门指定的目标环境,用于在输出目录结构中的专用文件夹层次结构约定中托管 Node.js 模块的环境。
此外,当生成导出以供不支持通过动态 require 机制进行动态导入的环境使用,并且没有显式的“模块”导出机制时,使用 AMD 或 RequireJS 变体或用于支持动态加载模式的部署的目标环境作为使用 TypeScript 导出的替代方案是 还原生支持,无需额外的第三方工具链来预处理 AMD 导出语法。 当为给定的一组依赖项或模块生成输出时,可以通过使用传递给编译器的配置标志来动态控制。
总的来说,TypeScript 可以作为几乎任何支持基本 ECMAScript 的计算环境的编译目标,无论是通过直接还是间接(通过中间层代码)交互。 一般来说,这就是为什么内置了一个实验性的 TypeScript Playground,用于实时实验基本功能,在官方 TypeScript 网站 (https://typescript-playground.net/) 上在线托管,并且在 TypeScript 的镜像中具有几乎相同的实现 GitHub 存储库,已经存在了几乎
* shell config is created with CRLF https://github.com/microsoft/inshellisense/issues/8
* changing directory doesn't work https://github.com/microsoft/inshellisense/issues/5
reply