引讀:此篇文章是ts系列博客的第一篇,其實我主要想稱述一個觀點:從觀念上重視起ts來;javascript
爲何這樣說呢?舉個栗子: 在jquery時代,vue1.x剛出來的時候,咱們會自學一些vue相關的東西,目前也是,會vue的童鞋會自學react,反之,會react童鞋也會自學vue,爲何他們會自學vue或者react,而不多人自學ts呢?由於在某些童鞋的觀念裏面,ts是一個無關緊要的東西,不學也無所謂;也就是說,當某我的想學某項技術的時候,必定是這個技術在他的觀念裏面已經足夠重要了。html
爲何要接入typescript前端
目前的前端三駕馬車,angular,vue,react,惟有vue2.x對ts的支持不是很友好, vue3.0用ts重構了一下,前不久尤大也在官微上面作了些許稱述,說你們的關注點都放到了typeScript上了; 那麼爲何ts如此受關注呢? 使用 Typescript 編程有一些顯而易見的好處:vue
在強類型語言中,當一個對象從調用函數傳遞到被調用函數時,其類型必須與被調用函數中聲明的類型兼容
A(){ B(x) } B(y){ // y能夠賦值x,程序運行良好 }
靜態類型語言 | 動態類型語言 |
---|---|
對類型極度嚴格 | 對類型很是寬鬆 |
當即發現錯誤 | bug可能隱藏很長時間 |
運行時性能好 | 運行時性能好 |
子文檔化 | 可讀性差 |
ts在線編譯工具 www.typescriptlang.org/play/index.htmljava
- npm init -y - npm i typescript -g - tsc --init // 建立tsconfig.json - npm i webpack webpack-cli webpack-dev-server -D - npm i ts-loader typescript -D - npm i html-webpack-plugin -D - npm i clean-webpack-plugin webpack-merge -D let hello: string = 'hello ts'
build > webpack.base.config.jsnode
const HtmlWebpackPlugin = require('html-webapck-plugin') module.exports = { entry: './src/index.ts', output:{ filename: 'app.js' }, resolve:{ extensions: ['.js','.jsx','.tsx'] }, module:{ rules:[ { test: /\.tsx?$/i, use:[ { loader:'ts-loader' } ], exclude: /node_modules/ } ] }, plugins:[ new HtmlWebpackPlugin({ template:'/src/tpl/index.html' }) ] }
build > webpack.dev.config.jsreact
module.exports = { devtool: 'cheap-module-eval-source-map' // cheap: 忽略列信息 // module: 定位到ts源碼 // eval-source-map: 會以dataUrl的形式將sourceMap打包到文件中,重編譯速度很快,沒必要擔憂性能問題 }
build > webapck.config.jsjquery
const merge = require('webapack-merge') const baseConfig = require('./webapack.base.config.js') const devConfig = require('./webapack.dev.config.js') const proConfig = require('./webapack.pro.config.js') let config = process.NODE_ENV === 'development' ? devConfig: proConfig moduel.exports = merge(baseConfig,config)
package.jsonwebpack
{ "name": "ts_pro", "version": "1.0.0", "main": "./src/index.ts", "script": { "start": "webapck-dev-server --mode=development --config ./build/webpack.config.js", "build": "webpack --mode=production --config ./build/webpack.config.js" } }