Flow_JS靜態型別檢查器

weixin_34120274發表於2018-08-12

Flow Checker是Facebook公佈的一個JavaScript靜態型別檢查器,能夠在不改變程式碼的情況下,檢查JavaScript中一般的Bug,如:無聲型別轉換、空指標引用等等。同時,Flow也支援給JavaScript新增型別語法,因此,開發者們可以通過在他們的程式碼中宣告不變數讓其自動維護。

Flow可以將其理解為兩個東西:靜態型別檢查器、JavaScript方言

冒號後跟資料型別。
例:
function foo(x: string, y: number): number { return x.length * y; }
限制x為string,y為number,函式返回number。

function f(param:1|2|3|4|5){/*...*/}
declare var oneOrTwo:1|2;// Subset of the input parameters type.
declare var fiveOrSix:5|6;// Not a subset of the input parameters type.

f(oneOrTwo);// Works!
f(fiveOrSix);// Error!

以下程式碼中,value可以是"A"or"B".

function method(value: "A" | "B") {
    if (value === "A") { // value is "A"
    }
}

prop?:string 代表prop為string且可能存在。

function otherMethod() { /* ... */ }

function method(value: { prop ? : string }) {
    if (value.prop) {
        var prop = value.prop;
        otherMethod();
        prop.charAt(0);
    }
}

參考

教程:http://www.pinqy.cn/notes/flow-learning-1
官方文件:https://flow.org/

相關文章