您好,登錄后才能下訂單哦!
前言
阿特伍德定律,指的是any application that can be written in JavaScript, will eventually be written in JavaScript,意即“任何可以用JavaScript來寫的應(yīng)用,最終都將用JavaScript來寫”
在使用新技術(shù)的時(shí)候,切忌要一步一步的來,如果當(dāng)你嘗試把兩門不熟悉的新技術(shù)一起結(jié)合使用,你很大概率會被按在地上摩擦,會yarn/npm和React腳手架等技術(shù)是前提,后面我會繼續(xù)寫PWA深入和Node.js集群負(fù)載均衡Nginx,webpack原理解析等~謝謝思否官方對我上篇文章的加精~
在使用TypeScript前,請你務(wù)必萬分投入學(xué)習(xí)好以下內(nèi)容再嘗試:
學(xué)技術(shù)切忌過分急躁,一步登天,什么都想學(xué)卻什么都學(xué)不好。作者的心得,持之以恒的努力,把每個(gè)技術(shù)逐個(gè)擊破,最后結(jié)合起來使用,如魚得水,基礎(chǔ)不牢,地動山搖,本文的代碼會把所有配置和Redux,Ant-Design全部配好,開箱即用,其他的功能你看Ant-Design的文檔往里面加就行了~
正式開啟
本文介紹如何配置,已經(jīng)整體的業(yè)務(wù)流程如何搭建 GitHub源碼地址
請注意它是一個(gè)第三方項(xiàng)目,而且不是 Create React App 的一部分。
需要的依賴:都在package.json文件中。
這里請萬分注意,TS的包大部分都是需要下兩個(gè),一個(gè)原生,一個(gè)@types/開頭
{ "name": "antd-demo-ts", "version": "0.1.0", "private": true, "dependencies": { "@types/jest": "24.0.11", "@types/node": "11.13.7", "@types/react": "16.8.14", "@types/react-dom": "16.8.4", "@types/react-redux": "^7.0.8", "@types/react-router-dom": "^4.3.2", "@types/redux-thunk": "^2.1.0", "babel-plugin-import": "^1.11.0", "customize-cra": "^0.2.12", "less": "^3.9.0", "less-loader": "^4.1.0", "prop-types": "^15.7.2", "react": "^16.8.6", "react-app-rewired": "^2.1.3", "react-dom": "^16.8.6", "react-redux": "^7.0.2", "react-router-dom": "^5.0.0", "react-scripts": "3.0.0", "redux-chunk": "^1.0.11", "redux-devtools-extension": "^2.13.8", "redux-thunk": "^2.3.0", "typescript": "3.4.5" }, "scripts": { "start": "react-app-rewired start", "build": "react-app-rewired build", "test": "react-app-rewired test" }, "eslintConfig": { "extends": "react-app" }, "browserslist": { "production": [ ">0.2%", "not dead", "not op_mini all" ], "development": [ "last 1 chrome version", "last 1 firefox version", "last 1 safari version" ] }
* `Ant-Design`按需加載配置 `config-overrides.js`
const { override, fixBabelImports, addLessLoader } = require('customize-cra'); module.exports = override( fixBabelImports('import', { libraryName: 'antd', libraryDirectory: 'es', style: true, }), addLessLoader({ javascriptEnabled: true, modifyVars: { '@primary-color': '#1DA57A' }, }) ); ```
tsconfig.json ,TS的配置文件 我基本上沒怎么改動
{ "compilerOptions": { "target": "es5", "lib": [ "dom", "dom.iterable", "esnext" ], "allowJs": true, "skipLibCheck": true, "esModuleInterop": true, "allowSyntheticDefaultImports": true, "strict": true, "forceConsistentCasingInFileNames": true, "module": "esnext", "moduleResolution": "node", "resolveJsonModule": true, "isolatedModules": true, "noEmit": true, "jsx": "preserve" }, "include": [ "src" ] }
Redux less 的配置
配置沒看懂不要緊,架子我都全部給你搭好了,按著TS和Ant-Design的官網(wǎng)去操作就OK
寫TS代碼時(shí)候常常問問自己,這個(gè)到底可能是什么類型,這個(gè)到底是public 還是 private?這個(gè)函數(shù)要返回什么類型,接受什么參數(shù),什么是必須的,什么是可能沒有的,再去考慮命名空間接口合并,類合并,繼承這些問題。
復(fù)雜軟件需要用復(fù)雜的設(shè)計(jì),面向?qū)ο缶褪呛芎玫囊环N設(shè)計(jì)方式,使用 TS 的一大好處就是 TS 提供了業(yè)界認(rèn)可的類( ES5+ 也支持)、泛型、封裝、接口面向?qū)ο笤O(shè)計(jì)能力,以提升 JS 的面向?qū)ο笤O(shè)計(jì)能力。
當(dāng)你在TS世界遨游過后,再回JS的世界,那么你會發(fā)現(xiàn)你寫代碼很少會出錯(cuò),除非是業(yè)務(wù)邏輯的問題~
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持億速云。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。