vue源碼學(xué)習(xí) --- flow學(xué)習(xí)(2)

原文: https://flow.org/en/docs/types/literals/

一. 其他

1. 指定具體值

只能接受指定的值

function acceptsTwo(value: 2) {
  // ...
}
acceptsTwo(2);   // Works!
// acceptsTwo(3);   // Error!
// acceptsTwo("2"); // Error!

function getColor(name: "success" | "warning" | "danger") {
  switch (name) {
    case "success" : return "green";
    case "warning" : return "yellow";
    case "danger"  : return "red";
  }
}
getColor("success"); // Works!
getColor("danger");  // Works!
// getColor("error");   // Error!

2. 混合類型

即各種類型的值都能接受

function stringify(value: mixed) {
  // ...
}
stringify("foo");
stringify(3.14);
stringify(null);
stringify(undefined);
stringify({});

3. 任意類型

一般情況下是不推薦使用的

function add(one: any, two: any): number {
  return one + two;
}

add(1, 2);     // Works.
add("1", "2"); // Works.
add({}, []);   // Works.

4. 可能值(Maybe types)

語法: ?number , 值可能是number, null, undefined

function acceptsMaybeNumber(value: ?number) {
  // ...
}

acceptsMaybeNumber(42);        // Works!
acceptsMaybeNumber();          // Works!
acceptsMaybeNumber(undefined); // Works!
acceptsMaybeNumber(null);      // Works!
// acceptsMaybeNumber("42");      // Error!
acceptsMaybeNumber(Number('123'));      // Works!

5. JavaScript變量聲明

var let const

const foo /* : number */ = 1;
const bar: number = 2;
var barVar: number = 2;
let barLet: number = 2;
let isOneOf: number | boolean | string = foo; // Works!
let bool = true;
let isBoolean: boolean = bool; // Works!

let test: boolean = 42;
function mutate() {
  test = true;
  test = "hello";
}
mutate();           // Error!

vue源碼學(xué)習(xí) --- flow學(xué)習(xí)(3)
http://www.itdecent.cn/p/440d52a7ef97

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容