// vue源码片段
declare type ASTElementHandler = {
value: string;
params?: Array<any>;
modifiers: ?ASTModifiers;// 这个好像是接收指定类型,undefined,null
};
// vue源码片段
declare type ASTElementHandler = {
value: string;
params?: Array<any>;
modifiers: ?ASTModifiers;// 这个好像是接收指定类型,undefined,null
};
我再补充一点:
可选类型(Maybe Types)
可选类型是用于值可选的地方,用法就是在类型前加一个?,例如?string或?number。可选类型可以是null或void。
// @flow
function acceptsMaybeString(value: ?string) {
// ...
}
acceptsMaybeString("bar"); // Works!
acceptsMaybeString(undefined); // Works!
acceptsMaybeString(null); // Works!
acceptsMaybeString(); // Works!
可选对象属性
对象拥有可选属性的用法就是在属性后加一个?,可选对象属性可以void或省略,但不能是null。如:
// @flow
function acceptsObject(value: { foo?: string }) {
// ...
}
acceptsObject({ foo: "bar" }); // Works!
acceptsObject({ foo: undefined }); // Works!
acceptsObject({ foo: null }); // Error!
acceptsObject({}); // Works!
可选函数参数
函数拥有可选参数的用法是在参数后加一个?,可选参数可以void或省略,但不能是null。如:
// @flow
function acceptsOptionalString(value?: string) {
// ...
}
acceptsOptionalString("bar"); // Works!
acceptsOptionalString(undefined); // Works!
acceptsOptionalString(null); // Error!
acceptsOptionalString(); // Works!
10 回答11.3k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
2 回答4.8k 阅读✓ 已解决
4 回答4.4k 阅读✓ 已解决
4 回答1.9k 阅读✓ 已解决
4.declare type的作用 是因为:js本身是弱类型语言,需要在运行的时候才能判定类型是否有问题或者进行一些操作,效率低。
提前申明类型之后,一方面便于合作,更规范。另一方面可以在编译阶段就能检测出语法错误。节省了运行时间。