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

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

強類型 JavaScript 的解決方案

瀏覽:80日期: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久久,三上悠亚国产精品一区二区三区
日韩精品一区二区三区中文| 电影天堂国产精品| 国产亚洲精品v| 自拍日韩欧美| 亚洲免费婷婷| 日韩中文字幕91| 日韩有吗在线观看| 欧美中文高清| 久久中文字幕一区二区三区| 美女久久久久久| 精品丝袜在线| 狠狠爱www人成狠狠爱综合网| 亚洲一区欧美二区| 日本一区福利在线| 97久久超碰| 精品91福利视频| 欧美va天堂在线| 亚洲午夜国产成人| 国产亚洲一区二区三区啪| 国产精品香蕉| 亚洲综合福利| 蜜臀久久99精品久久一区二区| 成人福利av| 99视频一区| 日韩av午夜在线观看| 精品久久美女| 99久久九九| 免费的成人av| 国产极品久久久久久久久波多结野| 国产极品久久久久久久久波多结野 | 久久国产欧美日韩精品| 久久伊人久久| 在线成人直播| 国产欧美91| 久久狠狠婷婷| 日韩精品久久理论片| 高清一区二区三区av| 免费国产自久久久久三四区久久 | 日产午夜精品一线二线三线| 欧美影院三区| 日韩不卡一区二区三区| 成人在线视频免费| 91久久中文| 国产乱人伦精品一区| 久久视频一区| 欧美偷窥清纯综合图区| 亚洲一级少妇| 日本精品另类| 久久精品亚洲人成影院| 综合激情网...| 国产aⅴ精品一区二区三区久久| 免费久久精品| 欧美经典一区| 日韩精品一二三| 色婷婷色综合| 亚洲精品大片| 天堂日韩电影| 国产日韩欧美一区二区三区在线观看| 亚洲不卡系列| 国产亚洲第一伦理第一区| 国产一区视频在线观看免费| 欧美日本精品| 日韩亚洲国产欧美| 精品视频91| 蜜臀精品一区二区三区在线观看 | 成人在线免费观看91| 免费在线欧美视频| 国产资源在线观看入口av| 日本va欧美va精品发布| 青青久久av| 国产精品nxnn| 免费观看日韩电影| 久久久久国产精品一区二区| 国产日产一区| 香蕉久久国产| 国产高潮在线| 日本午夜精品久久久久| 在线 亚洲欧美在线综合一区| 国产+成+人+亚洲欧洲在线| 色综合视频一区二区三区日韩 | 偷拍精品精品一区二区三区| 日韩二区三区四区| 91久久久久| 久久蜜桃精品| 国产精品原创| 免费一级欧美片在线观看网站| 亚洲日韩中文字幕一区| 不卡一区综合视频| 国产精品麻豆久久| 国产三级一区| 亚洲精品系列| 欧美日韩四区| 久久九九精品| 日韩电影免费在线观看| 精品亚洲成人| 国产精品sm| 国产日韩精品视频一区二区三区| 综合激情婷婷| 蜜臀av一区二区在线免费观看| 午夜精品影院| 今天的高清视频免费播放成人| 国产成人免费av一区二区午夜| 国产日韩欧美一区二区三区在线观看| 六月婷婷一区| 亚洲免费播放| 在线日韩视频| 久久久久久美女精品| 国产精品久久久久久久免费观看 | 免费一级欧美片在线观看网站 | 91精品综合| 国产在线观看www| 精品一区二区三区的国产在线观看| 欧美日韩va| 欧美影院精品| 国产精品久久久久久久免费软件 | 四虎精品永久免费| 亚洲精品美女| 日韩一区二区三区高清在线观看| 亚洲精品亚洲人成在线观看| 蜜臀a∨国产成人精品| 久久av在线| 爽好久久久欧美精品| 亚洲一区二区三区四区电影 | 好看不卡的中文字幕| 91中文字幕精品永久在线| 亚洲精品福利| 日韩电影二区| 久久亚洲美女| 欧美精品影院| 欧美欧美黄在线二区| 久久黄色影视| 国产乱论精品| 精品久久国产一区| 色在线视频观看| 久久精品二区三区| 欧美精选视频一区二区| 日韩三区免费| 午夜欧美理论片| 三级在线观看一区二区| 亚州av一区| 国产精品一区亚洲| 精品久久在线| 日韩三区免费| 国产精品美女久久久| 亚洲欧洲专区| 国产精品99久久免费观看| 国产一区二区三区不卡视频网站 | 在线视频精品| 亚洲精品美女91| 欧美激情 亚洲a∨综合| 成人日韩在线| 一区二区三区网站| 国产精品第一国产精品| 国产91在线播放精品| 欧美久久精品一级c片| 一区二区三区国产盗摄| 日本欧美一区二区| 97精品中文字幕| 在线亚洲观看| 国产乱码精品一区二区三区亚洲人 | 蜜桃av一区| 中文字幕日韩高清在线| 乱一区二区av| 婷婷激情图片久久| 91精品麻豆| 在线精品亚洲欧美日韩国产| 婷婷国产精品| 亚洲不卡视频| 国产69精品久久| 蜜桃久久av| 国产videos久久| 视频一区二区三区中文字幕| 麻豆高清免费国产一区| 国产国产精品| 欧美精品91| 欧美综合二区| 97精品国产福利一区二区三区| 国产手机视频一区二区| 欧美在线日韩| 亚洲午夜一级| 欧美激情 亚洲a∨综合| 激情欧美一区二区三区| 国产亚洲精品美女久久久久久久久久| 国产精品久久久久久久久久10秀| 亚洲欧美网站| 久久久久亚洲精品中文字幕| 久久国产精品亚洲77777| 精品国产黄a∨片高清在线| 免费在线看一区| 欧美黄色网页| 国产精品115| 蜜臀国产一区二区三区在线播放| 久久久91麻豆精品国产一区| 亚洲一区中文| 四季av一区二区凹凸精品| 亚洲精品无吗| 久久精品国内一区二区三区水蜜桃| 久久精品99久久久| 好吊一区二区三区| 吉吉日韩欧美|