鑑於JavaScript
是弱類型語言和動態類型語言,所以JavaScript
在變量聲明的時候無需指定變量的類型,在聲明以後即可爲其賦值不一樣的類型。所以在多人團隊的開發裏面,JavaScript的這種「便捷」反而會帶來不少麻煩。node
Cannot read property 'xxx' of undefined
'xxx' is not a function/object
'xxx' is not defined
複製代碼
TypeScript
就是爲了解決JavaScript
的問題而產生。 與JavaScript
截然相反,TypeScript
使用的是強類型語言和靜態類型語言,有寫過Java
的同窗應該會感到很是親切。TypeScript
在多人團隊開發時候便成爲了避免錯的選擇。typescript
強/弱類型、動/靜類型、GC 和 VM,你真的分清楚了麼?express
編譯器推薦使用VS CODE,對TyepScript
的支持很是友好npm
在你的項目新建一個文件夾,如helloTS,打開helloTSjson
快速的建立一個package.json
segmentfault
npm init -y
複製代碼
安裝TypeScriptbash
npm install typescript -s
複製代碼
新建tsconfig.json
文件服務器
tsc --init
複製代碼
tsconfig.json結構以下app
{
"compilerOptions": {
···
// "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */
// "sourceMap": true, /* Generates corresponding '.map' file. */
// "outFile": "./", /* Concatenate and emit output to single file. */
// "outDir": "./", /* Redirect output structure to the directory. */
// "rootDir": "./", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */
···
}
}
複製代碼
在helloTS目錄下新建build、src文件夾,此時的目錄結構爲post
├──helloTS
├──build
├──src
└──tsconfig.json
複製代碼
將tsconfig.json下的outDir
路徑修改成./build
,rootDir
路徑修改成./src
此時tsconfig.json
結構以下
{
"compilerOptions": {
···
// "sourceMap": true, /* Generates corresponding '.map' file. */
// "outFile": "./", /* Concatenate and emit output to single file. */
// "outDir": "./build", /* Redirect output structure to the directory. */
// "rootDir": "./src", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */
// "composite": true, /* Enable project compilation */
// "tsBuildInfoFile": "./", /* Specify file to store incremental compilation information */
···
}
}
複製代碼
至此,tsconfig.json
的配置到此結束,其他配置可查閱tsconfig配置文檔
npm install express -s
複製代碼
因爲咱們使用到了TypeScript
,所以須要繼續引入相應的d.ts
來識別
npm install @types/express -s
複製代碼
在咱們的項目helloTS中,咱們將建立一個名爲的文件夾app做爲啓動項。在此文件夾中,咱們將建立一個名爲app.ts如下內容的文件,此時的目錄結構爲
├──helloTS
├──build
├──src
├──app
├──app.ts
└──tsconfig.json
複製代碼
app.ts
import express = require('express');
// Create a new express application instance
const app: express.Application = express();
app.get('/', (req, res) => {
res.send('Hello World!');
});
app.listen(3000, ()=> {
console.log('Example app listening on port 3000!');
});
複製代碼
執行命令行
tsc
複製代碼
你會發現build
目錄裏生成了相應的js
代碼,目錄結構以下
├──helloTS
├──build
├──app
├──app.js
├──src
├──app
├──app.ts
└──tsconfig.json
複製代碼
再次執行命令行
node ./build/app/app.js
複製代碼
若提示Example app listening on port 3000!
,恭喜你已經成功搭建好一個相對簡陋的服務器了。
通過上述的操做,咱們會發現每次編譯的時候都須要使用tsc
構建,而後再經過node
開啓服務,若要進行開發,則會大大下降開發效率。
使用ts-node
參考使用ts-node和vsc來調試TypeScript代碼
首先安裝ts-node
npm install ts-node -s-d
複製代碼
打開.vscode/launch.json
配置文件(若是沒有此文件,請點擊菜單欄的調試->打開配置)修改成
{
"configurations": [
{
"type": "node",
"request": "launch",
"name": "啓動程序",
"runtimeArgs": [
"--nolazy",
"-r",
"ts-node/register"
],
"args": [
"${workspaceRoot}/src/app/app.ts"
],
"env": { "TS_NODE_PROJECT": "tsconfig.json" },
"sourceMaps": true,
"cwd": "${workspaceRoot}",
"protocol": "inspector",
"console": "integratedTerminal",
"internalConsoleOptions": "neverOpen"
}
]
}
複製代碼
以後直接在VS Code
上按F5刷新便可開啓,這下就能夠愉快地調試Ts了。