可選類型(Maybe Types)
可選類型是用于值可選的地方,用法就是在類型前加一個(gè)?
,例如?string
或?number
轰枝。可選類型可以是null
或void
。
// @flow
function acceptsMaybeString(value: ?string) {
// ...
}
acceptsMaybeString("bar"); // Works!
acceptsMaybeString(undefined); // Works!
acceptsMaybeString(null); // Works!
acceptsMaybeString(); // Works!
可選對(duì)象屬性
對(duì)象擁有可選屬性的用法就是在屬性后加一個(gè)?
檬洞,可選對(duì)象屬性可以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!
函數(shù)參數(shù)默認(rèn)值
在給定默認(rèn)值類型的情況下广料,函數(shù)參數(shù)默認(rèn)值可以是void
或省略砾脑,但不能是null
。如:
// @flow
function acceptsOptionalString(value: string = "foo") {
// ...
}
acceptsOptionalString("bar"); // Works!
acceptsOptionalString(undefined); // Works!
acceptsOptionalString(null); // Error!
acceptsOptionalString(); // Works!