我尝试使用 Flow
输入以下代码type Metadata = {
currentPage: string,
};
type State = {
result: {
metadata: Metadata,
}
}
type EmptyObject = {};
type Test = Metadata | EmptyObject;
class HelperFn {
state: State;
metadata: Test;
constructor(state: State) {
this.state = state;
if (state && state.result && state.result.metadata) {
this.metadata = state.result.metadata;
} else {
this.metadata = {};
}
}
getCurrentPageNumber() {
return this.metadata.currentPage;
}
}
我创建了类型,稍后再进行分配。在课堂上,我将类型 Test 分配给元数据。元数据可以是具有属性的对象或空对象。当声明函数getCurrentPageNumber
时,lint Flow告诉我它
cannot get 'this.metadata.currentPage' because property 'currentPage' is missing in EmptyObject
像Flow一样仅指emptyObject
。告诉Flow我的对象可以带有属性或只是空的正确语法是什么?
答案 0 :(得分:0)
由于metaData
可以为空,因此Flow正确地告诉您this.metadata.currentPage
可能不存在。您可以将其包装在
if (this.metadata.currentPage) {
return this.metadata.currentPage
} else {
return 0;
}
要使其正常工作。