# ts-playground
**Repository Path**: jamesfancy/ts-playground
## Basic Information
- **Project Name**: ts-playground
- **Description**: 创建一个本地的 TypeScript Playground,可以监控 `.ts` 文件变化自动编译 `.js` 并执行。
- **Primary Language**: TypeScript
- **License**: MIT
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2020-07-25
- **Last Updated**: 2022-05-28
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# TypeScript Playground
TypeScript Playground 搭建了基本的 TypeScript 编辑/编译/运行环境。使用 VSCode 等编辑器打开后可以迅速试验/调试简单代码。TypeScript 官方的 [Playground](https://www.typescriptlang.org/play) 也是一个很好的代码试验平台,但需要在线使用,受网络环境和网络速度的限制。
当前版本的 TypeScript Playground 使用 VSCode 内置的调试器来运行和调试,在运行之前会自动调用构建任务,从 `.ts` 源码生成 `.js` 目标代码。
> 备注:之前使用 `gulp watch` 进行即时构建的方式,由于 `gulp` 技术栈越来越不活跃,已经废弃。如果仍然需要 `gulp watch` 方式的 TypeScript Playground,请切到 `gulp-watch-version` 分支。
## 用法
- 下载/克隆 ts-playground 源代码
- 使用 VSCode 打开,在 `src` 目录下编写代码
- 运行/调试:
- 快捷键 F5 调试,Ctrl+F5 运行但不调试
- 也可从菜单「Run ⇒ Start Debugging」或「Run ⇒ Run Without Debugging」启动
- 在 VSCode 的内置终端中查看运行结果
## 已知问题
构建结果是 ESM 类型,最近的 Node 大版本均支持直接运行 ESM 类型的代码,前提是在 `package.json` 中添加 `"type": "moudle"`。这个参数和浏览器中 `` 标签的 `type="module"` 属性作用相同。但是较旧的 Node 可能不支持 ESM,请注意检查 Node 的版本。
ESM 要求 `import` 时书写完整的文件名(含扩展名 `.js`),但 TypeScript Compiler 并不会为 `import` 语句补充 `.js` 扩展名,编写代码时需要手工添加。而且注意,是添加 `.js` 扩展名,而不是 `.ts` 扩展名,哪怕它实际是一个 `.ts` 文件。关于这个问题在 [TypeScript Issue](https://github.com/Microsoft/TypeScript/issues/16577) 中经过了激烈的讨论并已有[结论](https://github.com/Microsoft/TypeScript/issues/16577#issuecomment-754941937)。