# nodejs-study **Repository Path**: small-ice-cream/nodejs-study ## Basic Information - **Project Name**: nodejs-study - **Description**: nodejs 学习教程 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-08-21 - **Last Updated**: 2026-09-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Node.js 学习环境(TypeScript) 基于 Node.js 原生 `--strip-types` 运行 TypeScript,用 `tsc --noEmit` 做类型校验。 ## 环境要求 - Node.js >= 22.6(推荐 24+,原生支持 `--strip-types`) ## 安装 ```bash npm install ``` ## 使用 1. 在 `.env` 中设置当前学习天数: ``` DAY=3 ``` 2. 运行当天的代码: ```bash npm start ``` `app.ts` 会:读取 `.env` → `tsc --noEmit` 类型校验 → `node --strip-types src/days/index.ts` 运行。 ## 目录结构 ``` src/ app.ts # 入口:根据 .env 的 DAY 运行对应目录 days1/index.ts # Day 1 入口 days2/index.ts # Day 2 入口 days3/index.ts # Day 3 入口 ... ``` 每个 `daysN/` 目录以 `index.ts` 作为运行入口,可在此 import 同目录其他 `.ts` 模块。 ## 约定 - 新文件一律使用 `.ts`。 - 模块导入必须带 `.ts` 扩展名,例如 `import { add } from './math.ts'`。 - `.env` 用 `DAY=N` 指定当前天数。 ## 类型校验 ```bash npm run typecheck # 一次性校验 npm run typecheck:watch # 监听模式 ``` 运行 `npm start` 时会自动先做类型校验;临时跳过可设置 `SKIP_TYPECHECK=1`: ```bash SKIP_TYPECHECK=1 npm start ``` ## 关于 `--strip-types` 的限制 `node --strip-types` 只做「类型擦除」,不支持需要运行时生成的 TS 语法,例如: - `enum`(改用联合类型或 `as const` 对象) - 构造函数参数属性 `constructor(public x: number)` - `namespace`(带运行时代码) `tsconfig.json` 已开启 `erasableSyntaxOnly`,`tsc` 会在编译期提前拦截这些写法,避免运行时才报错。若需要完整 TS 特性,可改用 [tsx](https://github.com/privatenumber/tsx) 运行(届时关闭 `erasableSyntaxOnly`)。