日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

強類型 JavaScript 的解決方案

瀏覽:83日期:2023-11-21 10:32:31

JavaScript 是一種弱類型(或稱動態類型)語言,即變量的類型是不確定的。

x = 5; // 5x = x + ’A’; // ’5A’

上面代碼中,變量x起先是一個數值,后來是一個字符串,類型完全由當前的值決定,這就叫弱類型。

弱類型的好處是十分靈活,可以寫出非常簡潔的代碼。但是,對于大型項目來說,強類型更有利,可以降低系統的復雜度,在編譯時就發現類型錯誤,減輕程序員的負擔。

一直有人嘗試,讓 JavaScript 變成強類型語言。在官方最終支持強類型之前,本文介紹三種現在就可用的解決方案。

 一、TypeScript

TypeScript 是微軟2012年推出的一種編程語言,屬于 JavaScript 的超集,可以編譯為 JavaScript 執行。 它的最大特點就是支持強類型和 ES6 Class。

首先,安裝TypeScript。

$ npm install -g typescript

然后,為變量指定類型。

// greet.tsfunction greet(person: string) { console.log('Hello, ' + person);}greet([0, 1, 2]);

上面是文件 greet.ts 的代碼,后綴名 ts 表明這是 TypeScript 的代碼。函數 greet 的參數,聲明類型為字符串,但在調用時,傳入了一個數組。

使用 tsc 命令將 ts 文件編譯為 js 文件,就會拋出類型不匹配的錯誤。

$ tsc greeter.tsgreet.ts(5,9): error TS2345: Argument of type ’number[]’ is not assignable to parameter of type ’string’. 二、Flowcheck

Flowcheck 是一個輕量級的類型斷言庫,可以在運行時(runtime)檢查變量類型是否正確。

首先,安裝Flowcheck。

$ npm install -g flowcheck

然后,編寫一個聲明了變量類型的腳本。

function sum(a: number, b: number) { return a + b;}sum(’hello’,’world’)

接著,使用下面的命令,將腳本轉換為正常的 JavaScript 文件。

$ browserify -t flowcheck -t [reactify --strip-types] input.js -o output.js

轉換后的文件如下。

var _f = require('flowcheck/assert');function sum(a, b) { _f.check(arguments, _f.arguments([_f.number, _f.number])); return a + b;}

可以看到,代碼中插入一個斷言庫。每次運行函數之前,會先執行斷言,如果類型不符就報錯。

$ node output.js// throw new TypeError(message); ^TypeError: Expected an instance of number got 'hello', context: arguments / [number, number] / 0Expected an instance of number got 'world', context: arguments / [number, number] / 1 三、Flow

Flow 是 Facebook 在2014年發布的一個類型檢查工具,用來檢查 React 的源碼。

安裝命令如下。

$ npm install --global flow-bin

如果安裝不成功(我就是如此),就需要自己從源碼編譯了。

Flow 的用法很多,我只舉幾個例子。前文介紹的兩種工具,只能檢查聲明了類型的變量,而 Flow 可以推斷變量類型。

// hello.js/* @flow */function foo(x) { return x*10;}foo('Hello, world!');

上面是文件 hello.js ,該文件的第一行是注釋,表明需要使用 Flow 檢查變量類型。

$ flow checkhello.js:7:5,19: stringThis type is incompatible with/hello.js:4:10,13: number

運行 flow check 命令,得到報錯信息:預期函數 foo 的參數是一個數值,但是實際為一個字符串。

Flow 也支持變量的類型聲明。

/* @flow */function foo(x: string, y: number): string { return x.length * y;}foo('Hello', 42);

另一個有趣的功能是,Flow 可以將類型注釋(annotation),轉為類型聲明。

// annotation.js/** @param {number} x @return {number} */function square(x) { return x * x;}square(5);

運行 flow port 命令,會得到下面的結果。

$ flow port annotation.jsfunction square(x: number) : number { return x * x; }

Flow 的更多介紹,可以閱讀《Exploring Flow, Facebook’s Type Checker for JavaScript》。

本文的原始幻燈片點擊這里(里面有更多內容)。

標簽: JavaScript
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
综合激情视频| 亚洲tv在线| 中文字幕av亚洲精品一部二部| 日韩欧美视频专区| 日本午夜大片a在线观看| 国产精品国产一区| 国产 日韩 欧美 综合 一区| 国产精品天天看天天狠| 国产精品.xx视频.xxtv| 色欧美自拍视频| 欧美三区四区| 免费毛片在线不卡| 国产精品试看| 国产欧美一区二区三区国产幕精品 | 在线 亚洲欧美在线综合一区| 999久久久91| 一二三区精品| 青青草国产成人99久久| 国产精品极品国产中出| 成人美女视频| 一区二区三区国产盗摄| 亚洲欧美网站在线观看| 国内在线观看一区二区三区| 日本不卡的三区四区五区| 蜜臀久久99精品久久久画质超高清| 国产毛片久久| 国产经典一区| 国产中文一区| 欧美在线日韩| 亚洲无线一线二线三线区别av| 亚洲aa在线| 欧美中文一区二区| 国产欧美日韩影院| 精品在线91| 精品一区二区三区视频在线播放| 91精品一区二区三区综合在线爱 | 久久久久久久久丰满| 亚洲欧美高清| 日韩av专区| 国产欧美日韩精品一区二区三区 | 国产不卡精品| 欧美久久香蕉| 午夜亚洲精品| 亚洲a一区二区三区| 国产精品嫩草影院在线看| 亚洲欧洲一区二区天堂久久| 欧美好骚综合网| 久久av网址| 欧美一区激情| 日韩精品导航| 国产精品婷婷| 中文在线一区| 亚洲福利免费| 欧美91视频| 日韩精品久久久久久久电影99爱| 国产精品网在线观看| 日韩有吗在线观看| 男人操女人的视频在线观看欧美| 国产日韩三级| 少妇久久久久| 久久久久国产精品一区三寸| 黄色网一区二区| 欧美aⅴ一区二区三区视频| 日韩av不卡在线观看| 欧美日韩一区二区三区四区在线观看| 国产综合精品一区| 91青青国产在线观看精品| 美女精品久久| 亚洲美女久久精品| 欧美不卡高清一区二区三区| 国产精品亚洲一区二区三区在线观看| 成人日韩av| 精品欧美一区二区三区在线观看| 日韩黄色大片| 激情婷婷综合| 日本欧美在线看| 亚洲精品在线a| 国产精品久久久久久久免费软件| 国产精品jk白丝蜜臀av小说| 免费在线观看一区| 风间由美中文字幕在线看视频国产欧美| 国产日韩欧美| 欧美13videosex性极品| 国产在线成人| 国产日韩一区二区三免费高清| 精品久久视频| 一本一道久久a久久精品蜜桃| 亚洲一二三区视频| 精品一区二区三区中文字幕视频 | 免费不卡在线观看| 国产欧美二区| 欧美精品一二| 国产精品激情| 久久婷婷一区| 日韩精品欧美成人高清一区二区| 美日韩一区二区三区| 亚洲色诱最新| 91伊人久久| 国产精品美女久久久| 国产欧美一区二区精品久久久| 日韩成人亚洲| 国产精品久久久网站| 久久福利一区| 色88888久久久久久影院| 日本一区福利在线| 日韩免费av| 国产精品黄色| 亚洲精品伊人| 丝袜美腿一区| 精品深夜福利视频| 亚州av日韩av| 国产一区成人| 色婷婷久久久| 激情黄产视频在线免费观看| 亚洲开心激情| 久久国产精品99国产| 欧美/亚洲一区| 亚洲91视频| 成人亚洲欧美| 日本一区二区高清不卡| 欧美aⅴ一区二区三区视频| 日韩精品一级| 91成人精品在线| 中文亚洲免费| 免费不卡中文字幕在线| 日本高清不卡一区二区三区视频| 麻豆精品视频在线观看视频| 日韩av电影一区| 亚洲三级av| 日韩中文字幕| 国产欧美日韩一区二区三区四区| 日韩精品一区二区三区中文| 天堂va欧美ⅴa亚洲va一国产| 蜜桃传媒麻豆第一区在线观看| 在线精品视频一区| 日本成人中文字幕在线视频| 日本一区福利在线| 欧美天堂一区| 欧美aa在线视频| 高清av一区| 亚洲二区视频| 亚洲开心激情| 精品国产亚洲日本| 精精国产xxxx视频在线野外| 激情欧美国产欧美| 美女被久久久| 麻豆91精品视频| 久久精品免费一区二区三区 | 你懂的国产精品永久在线| 国产69精品久久| 欧美精品一二| 欧美欧美黄在线二区| 精品一区av| 欧美一级专区| 久久亚洲资源中文字| 黑丝美女一区二区| 久久精品999| 日韩精品电影| 欧美视频一区| 亚洲大全视频| 麻豆国产一区| 中文在线一区| 国精品产品一区| 亚洲女同一区| 国产一区不卡| 蜜桃久久久久久久| 国产91在线播放精品| 综合五月婷婷| 激情久久久久久久| 久久精品欧洲| 综合色一区二区| 99久久婷婷这里只有精品| 久久激情五月婷婷| 婷婷色综合网| 精品一区二区三区在线观看视频| 日韩中文字幕亚洲一区二区va在线 | 久久精品人人| 偷拍亚洲精品| 日韩视频免费| 精品成人免费一区二区在线播放| 婷婷成人综合| 国产日韩欧美在线播放不卡| 亚洲激情五月| 精品国模一区二区三区| 国产精品一区三区在线观看| 视频在线观看一区| 日韩精品一区二区三区免费观看| 久久亚洲人体| 国产精品亚洲欧美一级在线| 欧美久久精品一级c片| 国产a亚洲精品| 国内精品美女在线观看| 日韩av在线免费观看不卡| 亚洲一区二区毛片| 狠狠久久婷婷| 99精品在线观看| 亚洲人成在线网站| 精品欧美日韩精品| 美女国产一区二区三区| 国产探花一区|