在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Python  Linux  網(wǎng)絡(luò)安全  HTML/ flow中問號(hào)在參數(shù)后面和在冒號(hào)有什么區(qū)別?declare type的作用是?看

flow中問號(hào)在參數(shù)后面和在冒號(hào)有什么區(qū)別?declare type的作用是?看英文文檔有點(diǎn)一知半解

// vue源碼片段
declare type ASTElementHandler = {
  value: string;
  params?: Array<any>;
  modifiers: ?ASTModifiers;// 這個(gè)好像是接收指定類型,undefined,null
};

vue源碼出處

回答
編輯回答
葬愛
  1. params?: Array<any>; 問號(hào)在前,則類型可以是 數(shù)組 、void ,但不能是null
  2. params:? Array<any>; 問號(hào)在后,類型可以是 數(shù)組 、void,也可以是 null
  3. ASTModifiers是用戶在flow文件中自定義的結(jié)構(gòu)類型,根據(jù)項(xiàng)目需求來自行指定

4.declare type的作用 是因?yàn)椋簀s本身是弱類型語言,需要在運(yùn)行的時(shí)候才能判定類型是否有問題或者進(jìn)行一些操作,效率低。
提前申明類型之后,一方面便于合作,更規(guī)范。另一方面可以在編譯階段就能檢測出語法錯(cuò)誤。節(jié)省了運(yùn)行時(shí)間。

2017年4月9日 07:27
編輯回答
不歸路

我再補(bǔ)充一點(diǎn):
可選類型(Maybe Types)
可選類型是用于值可選的地方,用法就是在類型前加一個(gè)?,例如?string或?number。可選類型可以是null或void。

// @flow
function acceptsMaybeString(value: ?string) {
  // ...
}

acceptsMaybeString("bar");     // Works!
acceptsMaybeString(undefined); // Works!
acceptsMaybeString(null);      // Works!
acceptsMaybeString();          // Works!
可選對象屬性
對象擁有可選屬性的用法就是在屬性后加一個(gè)?,可選對象屬性可以void或省略,但不能是null。如:

// @flow
function acceptsObject(value: { foo?: string }) {
  // ...
}

acceptsObject({ foo: "bar" });     // Works!
acceptsObject({ foo: undefined }); // Works!
acceptsObject({ foo: null });      // Error!
acceptsObject({});                 // Works!

可選函數(shù)參數(shù)
函數(shù)擁有可選參數(shù)的用法是在參數(shù)后加一個(gè)?,可選參數(shù)可以void或省略,但不能是null。如:

// @flow
function acceptsOptionalString(value?: string) {
  // ...
}

acceptsOptionalString("bar");     // Works!
acceptsOptionalString(undefined); // Works!
acceptsOptionalString(null);      // Error!
acceptsOptionalString();          // Works!
2018年6月20日 05:16