欧美精品在线一区二区三区_亚洲女同精品视频_日韩一区免费_国产欧美久久久精品免费_国产这里只有精品_僵尸再翻生在线观看_久久99精品国产一区二区三区_亚洲免费一区二区_女教师淫辱の教室蜜臀av软件_中文字幕国产一区二区

用Flow提升前端代碼健壯性

2018-4-26    seo達人

如果您想訂閱本博客內容,每天自動發(fā)到您的郵箱中, 請點這里

看一段常見代碼:

//例1 function foo(x) { return x + 10 }
foo('Hello!') //例2 function main(params){ //fn1函數獲取了一個數據 var object = fn1(params) //fn2根據獲數據,產生一個結果 var result = fn2(object) return result
}
    
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

例2很明顯,這個過程非常的‘黑’,如果你想知道object包含什么數據的話,可以:

  1. 打印一下 console.log(object)
  2. 查看fn1的注釋,并且保佑它的注釋是正確,全面的
  3. 或結合1,2,然后仔細查看fn1的源碼,希望它不是很復雜

被上述步驟折磨完之后,終于能真正的寫點代碼了,但是依舊得非常小心,因為這里還有另一個函數:fn2

在修改代碼的時候,得保證result這個結果沒有被影響,那么如何保證呢?

很簡單,重復上面的步驟,搞清楚result包含的數據,在測試的時候確保其數據跟原先的相同。 

動態(tài)類型一時爽,代碼重構火葬場 
知乎傳送門:為什么說“動態(tài)類型一時爽,代碼重構火葬場”

是時候徹底優(yōu)化這個煩人的問題了

引入類型系統

其實問題的根源就是因為javascript太靈活了,在代碼運行期間幾乎可以做任何的修改,

沒有東西可以在代碼層面保證 某個變量,某個函數 跟預期的一致

所以要加入類型系統來確保代碼的可靠性,在后期維護的時候同樣能夠傳達出有效的信息

Flow & TypeScript

Flow是個JavaScript的靜態(tài)類型檢查工具,由Facebook出品的開源碼項目,問世只有兩三年,是個相當年輕的項目。簡單來說,它是對比TypeScript語言的解決方式。

會有這類解決方案,起因是JavaScript是一種弱(動態(tài))數據類型的語言,弱(動態(tài))數據類型代表在代碼中,變量或常量會自動依照賦值變更數據類型,而且類型種類也很少,這是直譯式腳本語言的常見特性,但有可能是優(yōu)點也是很大的缺點。優(yōu)點是容易學習與使用,缺點是像開發(fā)者經常會因為賦值或傳值的類型錯誤,造成不如預期的結果。有些時候在使用框架或函數庫時,如果沒有仔細看文件,亦或是文件寫得不清不楚,也容易造成誤用的情況。

這個缺點在應用規(guī)模化時,會顯得更加嚴重。我們在團隊開發(fā)協同時,一般都是通過統一的代碼規(guī)范,來降低這個問題的發(fā)生,但JS語言本身無法有效阻止這些問題TypeScript這樣的強(靜態(tài))類型的JavaScript超集語言就開始流行,用嚴格的角度,以JavaScript語言為基底,來重新打造另一套具有強(靜態(tài))類型特性的語言,就如同Java或C#這些語言一樣,這也是為什么TypeScript稱自己是企業(yè)級的開發(fā)JavaScript解決方案。

TypeScript存在的問題

TypeScript自然有它的市場,但它有一些明顯的問題:

  • 首先是JavaScript開發(fā)者需要再進一步學習,內容不少
  • 有一定陡峭的學習曲線
  • 已經在使用的應用代碼,需要整個改用TypeScript代碼語法,才能發(fā)揮完整的功用。這對很多已經有內部代碼庫的大型應用開發(fā)團隊而言,將會是個重大的決定,因為如果不往全面重構的路走,將無法發(fā)揮強(靜態(tài))類型語言的最大效用eg:angular2

*所以許多現行的開源碼函數庫或框架,并不會直接使用TypeScript作為代碼的語言,另一方面因為TypeScript并非是普及到一定程度的語言。 
當然TypeScript也是個活躍的開源碼項目,發(fā)展到現在也有一段時間,它的背后有微軟公司的支持,全新打造過的Angular2框架中(由Google主導),也采用了TypeScript作為基礎的開發(fā)語言*

Flow你的新選擇

現在,Flow提供了另一個新的選項,它是一種強(靜態(tài))類型的輔助檢查工具Flow的功能是讓現有的JavaScript語法可以事先作類型的聲明(定義),在開發(fā)過程中進行自動檢查,當然在最后編譯時,一樣可以用babel工具來移除這些標記

相較于TypeScript是另外重新制定一套語言,最后再經過編譯為JavaScript代碼來運行。Flow走的則是非強制與非侵入性的路線。

Flow的優(yōu)點

  • 且易學易用 
    它的學習曲線沒有TypeScript來得高,雖然內容也很多,但半天學個大概,就可以漸進式地開始使用
  • Flow從頭到尾只是個檢查工具 
    不是新的程序語言或超集語言,所以它可以與各種現有的JavaScript代碼兼容,如果你哪天不想用了,就去除掉標記就是回到原來的代碼,沒什么負擔

so

選擇flow.js工具而不選擇TypeScript強類型語言的原因顯而易見? 
flow.js對工程的侵入性很小,無需大量的額外工作就能使用起來

從一個小例子演示

這種類型不符的情況在代碼中非常容易發(fā)生,例如上面的例1:

function foo(x) { return x + 10 }

foo('Hello!')
    
  • 1
  • 2
  • 3
  • 4
  • 5

x這個傳參,我們在函數聲明時希望它是個數字類型,但最后使用調用函數時則用了字符串類型。最后的結果會是什么嗎? “Hello!10”,這是因為加號(+)在JavaScript語言中,除了作為數字的加運算外,也可以當作字符串的連接運算。想當然這并不是我們想要的結果。

聰明如你應該會想要用類型來當傳參的識別名,容易一眼看出傳參要的是什么類型,像下面這樣:

function foo(number) { return number + 10 }
    
  • 1
  • 2
  • 3
  • 如果在復合類型的情況,例如這個傳參的類型可以是數字類型也可以是布爾類型,你又要如何寫得清楚?
  • 如果是個復雜的對象類型時,結構又該如何先確定好?
  • 另外還有函數的返回類型又該如何來寫?

利用Flow類型的定義方式,來解決這個小案例的問題,可以改寫為像下面的代碼:

// @flow function foo(x: number): number { return x + 10 }

foo('hi')
    
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

當使用非數字類型的值作為傳入值時,就會出現由Flow工具發(fā)出的警告消息,像下面這樣:

[flow] Cannot call foo with 'hi' bound to x because string 1 is incompatible with number 2. (a.getting-start.js:6:5)

如果是要允許多種類型也是很容易可以加標記的,假使這個函數可以使用布爾與數字類型,但返回可以是數字或字符串,就像下面這樣修改過:

// @flow function foo(x: number | boolean): number | string { if (typeof x === 'number') { return x + 10 } return 'x is boolean' }

foo(1)
foo(true)
foo(null) // 這一行有類型錯誤消息
    
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

在多人協同開發(fā)某個有規(guī)模的JavaScript應用時,這種類型的輸出輸入問題就會很常遇見。如果利用Flow工具的檢查,可以避免掉許多不必要的類型問題

真實案例

可能你會認為Flow工具只能運用在小型代碼中,其實不然,Vue源碼中大量使用flowjs中類型檢測: 
此處輸入圖片的描述

Flow使用

此處輸入圖片的描述 
1. flow init 
2. // @flow 或 /* @flow */ 
3. IDE插件 或 flow check 
在Visual Studio Code中因為它內建TypeScript與JavaScript的檢查功能,如果要使用Flow工具來作類型檢查,需要在用戶設置中,加上下面這行設置值以免沖突:

“javascript.validate.enable”: false

4 . babel插件在編譯時就會一并轉換Flow標記

{
  "plugins": [ "transform-flow-strip-types" ] }
    
  • 1
  • 2
  • 3
  • 4
  • 5

Flow支持的數據類型

Flow支持原始數據類型,如下面的列表:

  • boolean
  • number
  • string
  • null
  • void

類型別名&常見語法

// @flow export type Test = {
  titleOne?: string,
  titleTwo: ?string
} var a: Test = {titleOne:"3",titleTwo:4} var b:string = "" //any export type NavigationGestureDirection = 'horizontal' | 'vertical';

type T = Array<string> var x: T = []
x["Hi"] = 2 //有Flow警告 type TT = Array<Test> var xx:TT = []
xx = [{titleOne: '1',
  titleTwo: false}]

type MyObject = {
  foo: number,
  bar: boolean,
  baz: string,
};

let val:MyObject = {foo:2,bar:false,baz:'444'}; var val1: MyObject = {foo:2,bar:false,baz:null}; var val2: MyObject = {foo:2,bar:false}; function method(val: MyObject):MyObject { return {foo:2,bar:false,baz:'2'}} class Foo { constructor(val: MyObject) { /* ... */ } }
    
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

React中的應用

如果你在React class里面使用了React.PropTypes規(guī)范,你可以對JSX上的attributes做靜態(tài)類型檢查:

var Hello = React.createClass ({
  propTypes: {
    name: React.PropTypes.string.isRequired
  } ... });
//<Hello/> //Flow就會發(fā)現 缺少屬性的錯誤
//<Hello name={42}/>//屬性類型的錯誤
    
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
import * as React from 'react'; type Props = {
  foo: number,
  bar?: string,
}; function MyComponent(props: Props) {
  props.doesNotExist; // Error! You did not define a `doesNotExist` prop. return <div>{props.bar}</div>;
}

<MyComponent foo={42} />
    
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

更多關于支持React的細節(jié) 請移步 https://flow.org/en/docs/react/components/

藍藍設計www.ocunn.cn )是一家專注而深入的界面設計公司,為期望卓越的國內外企業(yè)提供卓越的UI界面設計、BS界面設計 、 cs界面設計 、 ipad界面設計 、 包裝設計 、 圖標定制 、 用戶體驗 、交互設計、 網站建設 平面設計服務

日歷

鏈接

個人資料

藍藍設計的小編 http://www.ocunn.cn

存檔

日韩美女视频网站| 91免费视频网| 国产精品www994| 亚洲欧美tv| 国产厕拍一区| 国产一区二区三区黄网站| 国产盗摄精品一区二区酒店| a天堂中文在线88| 一本一道dvd在线观看免费视频| 国产一区二区三区在线观看| 亚洲国产成人精品女人久久| 日韩精品一区二区三区国语自制 | 日韩伦理在线| av片在线观看网站| 欧美性猛交xxx乱大交3蜜桃| 一级片在线播放| 人人超碰在线| 在线亚洲电影| 一区二区三区高清在线视频| 首播影院在线观看免费观看电视| 少妇无码一区二区三区| 国内老熟妇对白hdxxxx| 国产成人精品一区二区无码呦| 亚洲午夜在线播放| 中文字幕在线视频免费| 国产精品传媒在线观看| 波多野结衣电车| 最新在线中文字幕| 国产精品一品二区三区的使用体验| 久久久久久无码精品大片| 日韩熟女一区二区| 最近中文字幕在线视频| 国产乱色精品成人免费视频| 国产欧美熟妇另类久久久| 精品久久久久成人码免费动漫| 999久久久久久| 欧美综合视频在线| 中文官网资源新版中文第二页在线观看| 色综合视频在线| 在线看视频你懂的| 国产女人在线观看| 黄色免费在线观看| rebdb初裸写真在线观看| 日产福利视频在线观看| 欧美aaaaaaaa| 懂色av一区二区| 国产麻豆精品久久| 希岛爱理av一区二区三区| 欧美片第1页综合| 久久久噜噜噜| 国产成人一区在线| 久久久久久久综合| 亚洲精品欧美在线| 欧美性生交xxxxx久久久| 色综合久久久久久久| 欧美日韩1234| 日韩精品在线免费播放| 日韩有码视频在线| 2019最新中文字幕| 亚洲999一在线观看www| 精品视频第一区| 日本一区二区三区四区五区六区| 免费在线观看视频a| 亚洲欧美自偷自拍另类| 无码任你躁久久久久久老妇| 成人黄色免费网址| 日本在线视频免费| www.五月婷婷| 国产在线电影| 色是在线视频| 国产图片一区| 欧美三级第一页| 精品一区二区三区久久久| 久久日韩粉嫩一区二区三区| 亚洲午夜国产一区99re久久| 7777精品久久久大香线蕉| 日韩电视剧免费观看网站| 久热精品视频在线观看| 国产欧美精品一区二区三区介绍| 欧美高清视频一区| 毛片在线播放视频| 人妻 丝袜美腿 中文字幕| 成人在线观看高清| 国产人妖一区二区三区| 黄色片视频在线观看| freexxx性亚洲精品| 哺乳一区二区三区中文视频| 午夜欧美精品| 粉嫩蜜臀av国产精品网站| 综合av第一页| 日韩欧美国产高清| 欧美精品在线免费观看| 国产超碰91| 国精产品一区一区三区视频| 免费看黄色aaaaaa 片| 欧美啪啪小视频| 在线看三级网站视频| 7777kkk亚洲综合欧美网站| 成人午夜网址| 久久久久久夜| 国产精品国产三级国产a| 这里只有精品电影| 欧美激情在线视频二区| 久久国产精品-国产精品| 超碰影院在线观看| 日本高清黄色片| 国产乱淫片视频| 成人免费高清| 欧美一性一交| 美女脱光内衣内裤视频久久网站 | 涩涩涩999| 亚洲欧美日韩一二三区| 国产精品99无码一区二区| 在线亚洲电影| 日韩综合av| 亚洲美女少妇无套啪啪呻吟| 国产精品天天看| 欧美精品一区二区三| 国产精品久久久久久久av电影| 亚洲一区不卡在线| 欲求不满的岳中文字幕| 91中文字幕在线播放| 91在线中文| 欧美日韩在线二区| eeuss鲁片一区二区三区在线观看| 91成人在线观看喷潮| 久久成人国产精品| 日本最新一区二区三区视频观看| 久久发布国产伦子伦精品| 国产精品suv一区| 成年人网站在线| 国产伦精品一区二区三区视频 | 免费看日韩毛片| 国产精品久久久久久久龚玥菲| 一区二区三区视频播放| 美国毛片一区二区三区| 欧美午夜宅男影院在线观看| 久久久久久国产| av日韩在线看| 中文字幕另类日韩欧美亚洲嫩草| 日韩午夜影院| 美女一区二区在线观看| 国产美女一区二区| 这里只有精品99re| 亚洲一区精品电影| caoporm在线视频| 亚洲天堂网在线视频| 免费在线小视频| 亚洲综合99| 欧美性猛交xxxx富婆弯腰| 97色在线观看| 337p粉嫩大胆噜噜噜鲁| 亚洲国产成人无码av在线| eeuss鲁一区二区三区| 欧美日韩ab| 亚洲午夜影视影院在线观看| 久久久亚洲国产| www国产精品内射老熟女| 国产无遮无挡120秒| 污污在线观看| 日韩视频中文| 在线免费精品视频| 成人午夜在线影院| 欧美做受高潮中文字幕| 97在线观看免费高清视频| 极品尤物一区| 中文字幕欧美激情一区| 按摩亚洲人久久| 精品成在人线av无码免费看| 日韩精品一区二区在线播放 | 尤物视频最新网址| 国产资源在线播放| 一区二区三区四区在线观看国产日韩 | 国产精品自在| 久久精品夜色噜噜亚洲a∨ | 午夜写真片福利电影网| gogogogo高清视频在线| 国产欧美欧美| 欧美日本不卡视频| 国产偷久久久精品专区| 日本少妇xxxxx| 欧美13一16娇小xxxx| 亚洲大片在线| 欧美日韩三级在线| 精品一区二区国产| 日本激情视频一区二区三区| 在线午夜影院| 奇米色一区二区| 亚洲精品久久久久中文字幕欢迎你 | 国产精品9999久久久久仙踪林| 久久久久久亚洲中文字幕无码| 国内三级在线观看| 影音先锋亚洲一区| 欧美精品视频www在线观看 | www.久久爱.com| 久久久天堂av| 国内偷自视频区视频综合 | 自拍偷拍亚洲欧美| 日本中文字幕网址| 国产福利资源在线| 国产精品亚洲二区| 欧美日韩久久久久| 国产精品我不卡| 国产成人av免费在线观看| 55av亚洲| 成人动漫一区二区| 欧美高清视频一区二区| 久久久久久综合网| 国产小视频免费在线观看| 亚洲精品孕妇| 亚洲精品av在线| 亚洲 欧美 日韩 国产综合 在线| 亚洲第一成年人网站| 99精品网站| 宅男噜噜噜66一区二区66| 夜夜爽99久久国产综合精品女不卡| 天天干天天操天天操| 欧美精品中文| 一本一本久久a久久精品综合麻豆| 国模精品一区二区三区| 国产午夜在线播放| ady日本映画久久精品一区二区| 一区二区高清在线| 国产精品对白刺激久久久| 免费在线观看一级片| 亚洲精品一区二区在线播放∴| 中文字幕在线不卡国产视频| 91精品黄色| 看片网址国产福利av中文字幕| 亚洲国产中文在线二区三区免| 亚洲一区二区精品3399| 国产九色91| 黄色av网站免费| 欧美午夜精彩| 日韩美女一区二区三区四区| 青草青青在线视频 | 成人小视频免费在线观看| 66m—66摸成人免费视频| 自拍偷拍视频亚洲| 成人日韩在线观看| 亚洲精品写真福利| 欧美精品中文字幕一区二区| 亚洲自拍第二页| 亚洲女同一区| 一区二区福利视频| 国产吃瓜黑料一区二区| www视频在线观看| 成人免费在线播放视频| 国产欧美综合精品一区二区| 一级黄色在线观看| 中文在线日韩| 中文字幕日韩精品在线| 亚洲天堂2024| 日韩免费电影| 午夜精品一区二区三区电影天堂| 亚洲国产精品视频一区| 国产综合在线播放| 午夜在线一区二区| 欧美激情一二三| 最新黄色av网址| 97久久亚洲| 5月丁香婷婷综合| 免费看污黄网站| 久久不射影院| 亚洲蜜臀av乱码久久精品 | 国产黄在线观看| a在线播放不卡| 91福利入口| a在线观看视频| 日韩激情中文字幕| 97在线日本国产| 久久免费视频精品| 欧美独立站高清久久| 国产亚洲精品成人av久久ww| theav精尽人亡av| 久久视频免费| 91精品久久久久久蜜臀| av在线网址导航| 国产精品扒开腿做爽爽爽视频软件| 亚洲电影激情视频网站| 免费视频爱爱太爽了| 美女黄视频在线观看| 国产精品乱人伦| 在线观看欧美激情| 成人精品一区二区| 国产精品入口麻豆原神| 亚洲午夜精品福利| 137大胆人体在线观看| 国产精品免费av| 2021狠狠干| a在线免费观看| 亚洲一区在线视频观看| 拔插拔插海外华人免费| 国产美女一区视频| 色哟哟一区二区| 九九热在线免费| 日韩欧美2区| 日韩一级免费一区| 影音先锋黄色资源| 久久午夜影院| 在线性视频日韩欧美| 三上悠亚作品在线观看| 亚洲成人精品| 97久久精品在线| 波多野结衣一本一道| 日韩激情视频网站| 91丨九色丨国产| 中文字幕在线看| 国产欧美精品一区| 三级网在线观看| 国产网红在线观看| 在线一区二区三区四区五区| 色网站在线视频| 国产精品极品国产中出| 一本一本久久a久久精品综合小说| 麻豆天美蜜桃91| 亚洲黄色免费| 成人女保姆的销魂服务| 亚洲av片在线观看| 中文天堂在线一区| 777精品久无码人妻蜜桃| 韩国精品主播一区二区在线观看| 日韩一区二区精品葵司在线 | 久久精品一区二区三| 99国产精品| 亚洲最大的网站| 激情小说 在线视频| 亚洲一区视频在线观看视频| 麻豆三级在线观看| 亚洲精品不卡在线观看 | 色老板免费视频| 国产日韩专区| 成人女人免费毛片| 大胆av不用播放器在线播放 | 日本不卡高字幕在线2019| 成人av免费播放| 国产亚洲欧洲997久久综合| 婷婷无套内射影院| 综合欧美精品| 北条麻妃在线一区二区| 一区二区不卡视频在线观看| 99精品视频免费在线观看| 国产在线视频在线| yy6080久久伦理一区二区| 亚洲一级一级97网| 国产99免费视频| 91视视频在线观看入口直接观看www| 69精品丰满人妻无码视频a片| 视频在线日韩| 中文字幕日韩免费视频| 国产精品成人无码| 91亚洲男人天堂| 欧美日韩在线中文| 国产伦精品一区二区三区在线播放| 欧美大片在线看免费观看| 99精品国产99久久久久久97| 国产精品理论片| 男插女视频网站| 综合精品久久| 精品国产福利| 97蜜桃久久| 亚洲视频综合网| 国产农村妇女毛片精品| 中文字幕亚洲视频| 国产精品一级无码| 在线看片不卡| 精品蜜桃一区二区三区| 日韩影院在线| 日韩有码视频在线| 婷婷色在线观看| 色成年激情久久综合| 黄色一级大片在线免费观看| 日韩一区二区三区在线免费观看| 午夜精品免费看| 日本视频不卡| 国产亚洲成av人片在线观看| 日韩大陆欧美高清视频区| 伊人久久亚洲美女图片| 国内精品国产三级国产99| 国产一区三区在线播放| 欧美一区三区二区在线观看| 哺乳挤奶一区二区三区免费看| 国产91精品一区二区绿帽| 欧洲午夜精品| 成人亲热视频网站| 久久青草视频| 亚洲最大福利视频网| 欧美高清xxx| 亚洲影影院av| 精品国产亚洲一区二区在线观看| 91天堂在线视频| 玖玖精品在线| 91传媒在线免费观看| 美国十次综合久久| 99精品欧美一区二区三区| 国产在线一区不卡| 国产一级特黄a大片99| 果冻天美麻豆一区二区国产| 欧美视频1区| 欧美女优在线视频|