我在模块上分开了一个应用程序。有几个实体和CSV模块。 CSV模块仅支持struct(Entity),但我想使CSV模块可与任何类型的实体一起使用。现在它像这样工作:
CSV模块从通道接收数据并将其严格转换为 componentWillReceiveProps(nextProps) {
const nextNavigationState = nextProps.navigation.state;
const nextParams = nextNavigationState.params;
if (nextParams) {
// Check if we change tab
if (nextProps.navigation.state.index !== this.props.navigation.state.index)
nextProps.navigation.dispatch(StackActions.popToTop({ immediate: true }));
}
}
结构。如何获得动态返回类型,因此它可以与任何类型的Entity一起使用,而不仅适用于EverySize
Everysize
答案 0 :(得分:1)
快速/肮脏的解决方案:返回界面{},但是最终您欺骗了编译器,而类型检查的痛苦就在您身上。
更好/更安全的解决方案:考虑一下您需要对返回的类型执行的常用操作,在每种类型上定义这些常用方法,并将这些常用方法保留在接口中。如果您试图从一个函数返回多个类型,则它们之间很可能已经存在某种共同的关系,或者几乎不需要重组就可以找到它们。从函数返回该接口。这样,编译器将始终能够检查您是否未返回意外内容(未实现那些方法的东西)。
您可能需要查看如何在Golang中实现factory method
模式。 (提示:它返回接口,而不是通常在C ++ / Java中完成的超类)
答案 1 :(得分:0)
如评论中所述-Go不允许您支持通用返回类型。因此,您要么想返回一个您知道您的实体类型符合的接口类型,要么就返回一个空的接口类型<= NOW()
。