【发布时间】:2017-01-23 11:39:27
【问题描述】:
我正在为我的项目测试 FlowJS,我遇到了 Type Aliases 的问题。
我为 API 构建了一个 Web SDK:我有一个使用此方法的 Helper 类:
class Helper {
find(filters:PaginationOptions = {}) {
// ...
}
}
PaginationOptions 是一个基本的 FlowJS 类型:
type PaginationOptions = {
start?:string,
end?:number,
};
我还有一个用户助手,继承自Helper:
class UsersHelper extends Helper {
find(filters:UsersFilterOptions = {}) {
// ...
}
}
UsersFilterOptions 是 FlowJS 类型“扩展”PaginationOptions:
type UsersFilterOptions = {
username?:string,
city?:string,
} & PaginationOptions;
我在这里使用Intersection,这样我的用户过滤器也应该接受start 和end 属性。
似乎我的 IDE (PHPStorm) 不喜欢我的课程 UsersHelper 中的 find() 方法,它一直告诉我:
不兼容的覆盖,应该有类型'PaginationOptions'
嗯...我知道,这就是UsersFilterOptions 与PaginationOptions 有交集的原因。
但 FlowJS 还向我显示了另外两个警告:
流:属性
username。在对象文字中找不到属性
流:属性city。在对象字面量中找不到属性
我不明白为什么会出现这些错误:这些属性被定义为可选...
您对修复这三个错误有什么建议吗?
提前致谢!
【问题讨论】:
-
@nat-mote 我可以知道为什么标签
flow-js被删除了吗?这个问题完全是关于flow-js的,我把这个标签去掉是很无意义的…… -
查看该标签的描述,它是针对不同项目的,不是流类型检查器。你想要的标签是流类型:stackoverflow.com/tags/flow-js/info
-
好的,谢谢你的信息:)
标签: inheritance intersection flowtype type-alias