TypeScript開(kāi)發(fā)環(huán)境搭建過(guò)程
一、前言
想用 TypeScript 寫(xiě)代碼,但卡在了“怎么跑起來(lái)”?
你是否遇到過(guò)這些問(wèn)題:
- 安裝了 TypeScript,卻不知道如何編譯
.ts文件? - 每次改代碼都要手動(dòng)執(zhí)行
tsc,效率低下? - 斷點(diǎn)調(diào)試時(shí)無(wú)法命中斷點(diǎn)?
- 項(xiàng)目結(jié)構(gòu)混亂,不知道該把文件放哪?
別擔(dān)心!本文將帶你從零開(kāi)始,一步步搭建一個(gè):
- ? 支持自動(dòng)編譯
- ? 支持?jǐn)帱c(diǎn)調(diào)試
- ? 結(jié)構(gòu)清晰
- ? 工具鏈完整
的 TypeScript 開(kāi)發(fā)環(huán)境。
無(wú)論你是寫(xiě) Node.js 后端、前端工具庫(kù),還是學(xué)習(xí) TS 基礎(chǔ),這套配置都適用!
二、準(zhǔn)備工作:安裝必要工具
1. 安裝 Node.js(推薦 LTS 版)
TypeScript 依賴(lài) Node.js 運(yùn)行。
前往 https://nodejs.org 下載并安裝。
驗(yàn)證安裝:
node -v # 如 v20.15.0 npm -v # 如 10.7.0
2. 安裝 TypeScript(全局 or 本地?)
? 推薦:本地安裝(項(xiàng)目級(jí))
npm init -y npm install --save-dev typescript
為什么不用全局安裝?
- 避免不同項(xiàng)目 TS 版本沖突
- 團(tuán)隊(duì)協(xié)作時(shí)版本一致
- 可通過(guò)
npx tsc調(diào)用本地版本
全局安裝(僅用于快速測(cè)試):
npm install -g typescript
驗(yàn)證安裝:
npx tsc --version # 顯示版本號(hào),如 Version 5.6.2
三、初始化項(xiàng)目結(jié)構(gòu)
創(chuàng)建一個(gè)清晰的目錄結(jié)構(gòu)是專(zhuān)業(yè)開(kāi)發(fā)的第一步:
my-ts-project/ ├── src/ # 源代碼目錄 │ └── index.ts ├── dist/ # 編譯輸出目錄(自動(dòng)生成) ├── tsconfig.json # TS 配置文件 └── package.json
創(chuàng)建文件:
mkdir my-ts-project && cd my-ts-project
mkdir src dist
echo 'console.log("Hello, TypeScript!");' > src/index.ts四、生成并配置tsconfig.json
這是 TypeScript 項(xiàng)目的“心臟”。
1. 自動(dòng)生成配置
npx tsc --init
這會(huì)生成一個(gè)帶大量注釋的 tsconfig.json,包含所有選項(xiàng)說(shuō)明。
2. 精簡(jiǎn)核心配置(推薦初學(xué)者使用)
編輯 tsconfig.json,保留關(guān)鍵字段:
{
"compilerOptions": {
"target": "ES2020", // 編譯目標(biāo) JS 版本
"module": "commonjs", // 模塊系統(tǒng)(Node.js 用 commonjs,瀏覽器用 ESNext)
"outDir": "./dist", // 輸出目錄
"rootDir": "./src", // 源碼目錄
"strict": true, // 啟用所有嚴(yán)格類(lèi)型檢查
"esModuleInterop": true, // 兼容 CommonJS 和 ES Module
"skipLibCheck": true, // 跳過(guò) .d.ts 類(lèi)型檢查(加快編譯)
"forceConsistentCasingInFileNames": true
},
"include": ["src/**/*"], // 包含哪些文件
"exclude": ["node_modules"] // 排除哪些文件
}關(guān)鍵解釋:
"strict": true→ 強(qiáng)烈建議開(kāi)啟,避免隱式 any"outDir"/"rootDir"→ 明確輸入輸出路徑"include"→ 只編譯src下的.ts文件
五、配置自動(dòng)編譯(告別手動(dòng)tsc)
每次改代碼都手動(dòng)編譯?太低效!
方法 1:使用--watch模式(最簡(jiǎn)單)
在 package.json 中添加腳本:
{
"scripts": {
"build": "tsc",
"dev": "t tsc --watch"
}
}運(yùn)行開(kāi)發(fā)模式:
npm run dev
效果:
? 監(jiān)聽(tīng) src 目錄變化
? 自動(dòng)重新編譯到 dist
? 終端實(shí)時(shí)顯示錯(cuò)誤
方法 2:結(jié)合nodemon(適用于 Node.js 項(xiàng)目)
如果你寫(xiě)的是后端服務(wù),希望自動(dòng)重啟 Node 進(jìn)程:
npm install --save-dev nodemon
修改 package.json:
{
"scripts": {
"build": "tsc",
"dev": "concurrently \"tsc --watch\" \"nodemon dist/index.js\""
}
}需要先安裝 concurrently:
npm install --save-dev concurrently
這樣就能實(shí)現(xiàn):
TS 修改 → 自動(dòng)編譯 → Node 自動(dòng)重啟 → 立即看到效果!
六、配置 VS Code:獲得最佳開(kāi)發(fā)體驗(yàn)
VS Code 是 TypeScript 的“親兒子”,原生深度集成。
1. 安裝推薦插件(可選但強(qiáng)烈建議)
- ESLint(配合 TS 做代碼規(guī)范)
- Prettier(代碼格式化)
- Auto Rename Tag(HTML 標(biāo)簽重命名)
TypeScript 本身無(wú)需插件,VS Code 內(nèi)置支持!
2. 啟用 TS 語(yǔ)言服務(wù)
打開(kāi) .ts 文件,右下角應(yīng)顯示 TS 版本(如 TS 5.6.2)。
點(diǎn)擊可切換使用本地或全局版本 → 選擇本地(Workspace)版本。
3. 配置自動(dòng)保存 & 格式化(可選)
在 VS Code 設(shè)置中 (Ctrl+,) 搜索:
- ?
Files: Auto Save→onFocusChange或afterDelay - ?
Editor: Format On Save→ 勾選
七、配置調(diào)試(Debug):直接在 VS Code 中打斷點(diǎn)
無(wú)需 console.log,直接調(diào)試 TS 源碼!
步驟 1:生成.vscode/launch.json
在 VS Code 中:
- 打開(kāi)左側(cè)“運(yùn)行和調(diào)試”面板
- 點(diǎn)擊“創(chuàng)建 launch.json 文件”
- 選擇 Node.js
步驟 2:配置launch.json
{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Debug TS",
"program": "${workspaceFolder}/src/index.ts",
"preLaunchTask": "tsc: build - tsconfig.json",
"outFiles": ["${workspaceFolder}/dist/**/*.js"],
"sourceMaps": true
}
]
}步驟 3:在tsconfig.json中啟用 sourceMap
確保 compilerOptions 包含:
"sourceMap": true
效果:
- 在
src/index.ts中打上斷點(diǎn) - 按
F5啟動(dòng)調(diào)試 - 程序停在 TS 源碼斷點(diǎn)處(而非編譯后的 JS)
? 實(shí)現(xiàn) “寫(xiě) TS,調(diào) TS” 的無(wú)縫體驗(yàn)!
八、驗(yàn)證環(huán)境是否成功
在 src/index.ts 中寫(xiě)一段帶類(lèi)型的代碼:
function greet(name: string): string {
return `Hello, ${name}!`;
}
console.log(greet("TypeScript"));運(yùn)行開(kāi)發(fā)模式:
npm run dev
- 查看
dist/index.js是否生成 - (可選)按
F5調(diào)試,看是否能命中斷點(diǎn)
? 如果一切正常,恭喜你!開(kāi)發(fā)環(huán)境已就緒!
九、常見(jiàn)問(wèn)題與解決方案
? 問(wèn)題 1:tsc : 無(wú)法加載文件... 因?yàn)樵诖讼到y(tǒng)上禁止運(yùn)行腳本
原因:Windows PowerShell 執(zhí)行策略限制
解決(以管理員身份運(yùn)行 PowerShell):
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
? 問(wèn)題 2:修改 TS 文件后,dist 沒(méi)更新
檢查:
- 是否運(yùn)行了
npm run dev(--watch模式)? tsconfig.json的include是否包含該文件?- 文件擴(kuò)展名是否為
.ts(不是.js)?
? 問(wèn)題 3:調(diào)試時(shí)斷點(diǎn)變成空心(未綁定)
原因:sourceMap 未生效
解決:
- 確保
tsconfig.json有"sourceMap": true - 確保
launch.json的outFiles路徑正確 - 重新編譯一次再調(diào)試
十、總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- React+Typescript項(xiàng)目環(huán)境搭建并使用redux環(huán)境的詳細(xì)過(guò)程
- vite?+?react?+typescript?環(huán)境搭建小白入門(mén)教程
- typescript環(huán)境安裝并開(kāi)啟VSCode自動(dòng)監(jiān)視編譯ts文件為js文件
- TypeScript開(kāi)發(fā)環(huán)境安裝
- TypeScript環(huán)境搭建的實(shí)現(xiàn)步驟
- TypeScript環(huán)境搭建并且部署到VSCode的詳細(xì)步驟
- 詳解使用Typescript開(kāi)發(fā)node.js項(xiàng)目(簡(jiǎn)單的環(huán)境配置)
相關(guān)文章
JS控制靜態(tài)頁(yè)面之間傳遞參數(shù)獲取參數(shù)并應(yīng)用的簡(jiǎn)單實(shí)例
下面小編就為大家?guī)?lái)一篇JS控制靜態(tài)頁(yè)面之間傳遞參數(shù)獲取參數(shù)并應(yīng)用的簡(jiǎn)單實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-08-08
基于ajax與msmq技術(shù)的消息推送功能實(shí)現(xiàn)代碼
這篇文章主要介紹了基于ajax與msmq技術(shù)的消息推送功能實(shí)現(xiàn)代碼,具有一定的參考價(jià)值,有興趣的可以了解一下。2016-12-12
JS中使用TextDecoder解碼二進(jìn)制數(shù)據(jù)(數(shù)據(jù)流的逐步解碼)
JS中使用TextDecoder將二進(jìn)制數(shù)據(jù)轉(zhuǎn)換為可讀文本字符串,首先,創(chuàng)建TextDecoder對(duì)象,使用decode()方法,解碼為字符串,,{stream:true}選項(xiàng)允許處理流式數(shù)據(jù),適用于大型數(shù)據(jù)流的逐步解碼,TextDecoder廣泛應(yīng)用于WebSocket通信、文件讀取、網(wǎng)絡(luò)響應(yīng)等場(chǎng)景2024-10-10
簡(jiǎn)單談?wù)凧S數(shù)組中的indexOf方法
最近在工作中遇到一個(gè)小問(wèn)題,這篇文章代碼我會(huì)簡(jiǎn)化成小例子展示給大家。給大家詳細(xì)的介紹JS數(shù)組中的indexOf方法,用心看到最后會(huì)有收獲哈,有需要的朋友們下面來(lái)一起看看吧。2016-10-10
判斷用戶(hù)的在線狀態(tài) onbeforeunload事件
window.event.clientX和window.event.clientY 將捕捉當(dāng)前事件發(fā)生時(shí)鼠標(biāo)相對(duì)與窗口的桌面坐標(biāo),通常情況下IE的關(guān)閉按鈕都會(huì)在頁(yè)面的右上部分,所以點(diǎn)關(guān)閉的時(shí)候鼠標(biāo)的坐標(biāo)的Y坐標(biāo)一定是小于0的2011-03-03
uniapp開(kāi)發(fā)安卓App實(shí)現(xiàn)高德地圖路線規(guī)劃導(dǎo)航功能的全過(guò)程
最近項(xiàng)目需要在APP內(nèi)實(shí)現(xiàn)路線規(guī)劃導(dǎo)航功能,直接打開(kāi)高德地圖進(jìn)行導(dǎo)航,下面這篇文章主要給大家介紹了關(guān)于利用uniapp開(kāi)發(fā)安卓App實(shí)現(xiàn)高德地圖路線規(guī)劃導(dǎo)航功能的相關(guān)資料,需要的朋友可以參考下2022-08-08
javascript 另一種圖片滾動(dòng)切換效果思路
把圖片們用ul之類(lèi)的包起來(lái),并設(shè)置float。然后設(shè)置這個(gè)ul本身為absolute定位,其父標(biāo)簽用relative定位。通過(guò)設(shè)置ul的left或top值,實(shí)現(xiàn)圖片隊(duì)列的滾動(dòng)效果2012-04-04

