如何为流类型设置默认值?
How to set a default value for a Flow type?
我定义了自定义流类型
export type MyType = {
code: number,
type: number = 1,
}
如果没有值,我希望 type
参数默认为 1
。但是,Flow 正在抱怨 Unexpected token =
。
这可以用 Flow 完成吗?
目前正在使用 Flow v0.32.0
。
类型声明中不能有默认值。
可能的想法
使用 class 并使用 属性 初始化程序初始化任何默认值:https://basarat.gitbooks.io/typescript/content/docs/classes.html#property-initializer
遵循@basarat 提出的想法,并使用 class。 class 作为类型和值存在。
可以初始化该值。 Flow 识别提议的 属性 初始化语法,因此使用 Flow(用于类型)和 babel(用于提议的功能支持)你可以像 this 一样声明你的 class:
// @flow
export class MyType {
code: number;
type: number = 1;
};
Flow 及其允许您定义的类型不存在于 javascript 运行时中。这就是类型声明不支持值初始值设定项的原因。
函数参数也可以有默认值。这是 ECMAScript 2015 的一个特性。
function method(value: string = "default") { /* ... */ }
除了设置类型外,默认参数也可以为空或完全省略。但是,它们不能为空。
// @flow
function acceptsOptionalString(value: string = "foo") {
// ...
}
acceptsOptionalString("bar");
acceptsOptionalString(undefined);
acceptsOptionalString(null);
acceptsOptionalString();
https://flow.org/en/docs/types/primitives/#toc-function-parameters-with-defaults
如果为组件设置它,那么您可以像这样设置默认值:
type Props = {
code: number,
type: number,
}
const Component = (props: Props) => (
<div>{props.code}</div>
<div>{props.type}</div>
);
// default values
const defaultProps: Props = {
code: '',
type: 1,
};
Component.defaultProps = defaultProps;
export default Component;
我定义了自定义流类型
export type MyType = {
code: number,
type: number = 1,
}
如果没有值,我希望 type
参数默认为 1
。但是,Flow 正在抱怨 Unexpected token =
。
这可以用 Flow 完成吗?
目前正在使用 Flow v0.32.0
。
类型声明中不能有默认值。
可能的想法
使用 class 并使用 属性 初始化程序初始化任何默认值:https://basarat.gitbooks.io/typescript/content/docs/classes.html#property-initializer
遵循@basarat 提出的想法,并使用 class。 class 作为类型和值存在。
可以初始化该值。 Flow 识别提议的 属性 初始化语法,因此使用 Flow(用于类型)和 babel(用于提议的功能支持)你可以像 this 一样声明你的 class:
// @flow
export class MyType {
code: number;
type: number = 1;
};
Flow 及其允许您定义的类型不存在于 javascript 运行时中。这就是类型声明不支持值初始值设定项的原因。
函数参数也可以有默认值。这是 ECMAScript 2015 的一个特性。
function method(value: string = "default") { /* ... */ }
除了设置类型外,默认参数也可以为空或完全省略。但是,它们不能为空。
// @flow
function acceptsOptionalString(value: string = "foo") {
// ...
}
acceptsOptionalString("bar");
acceptsOptionalString(undefined);
acceptsOptionalString(null);
acceptsOptionalString();
https://flow.org/en/docs/types/primitives/#toc-function-parameters-with-defaults
如果为组件设置它,那么您可以像这样设置默认值:
type Props = {
code: number,
type: number,
}
const Component = (props: Props) => (
<div>{props.code}</div>
<div>{props.type}</div>
);
// default values
const defaultProps: Props = {
code: '',
type: 1,
};
Component.defaultProps = defaultProps;
export default Component;