gpt4 book ai didi

javascript - 流程,如何继承类函数类型?

转载 作者:行者123 更新时间:2023-11-29 23:21:31 26 4
gpt4 key购买 nike

我做了一个简单的路由器类,简化后看起来像这样

// @flow
import { Container } from 'unstated'

type State = {
history: Object[],
pathname: string,
data: Object | null
}

class RouterState extends Container<State> {
state = {
history: [{ pathname: '/onboarding/sign-in', data: null }],
pathname: '/onboarding/sign-in',
data: null
}


mutationPush = (pathname: string, data?: Object | null = null) => {
if (pathname !== this.state.pathname) {
const history = [...this.state.history, { pathname, data }]
this.setState({
history,
pathname,
data
})
}
}
}
export default RouterState

不幸的是 RouterState.mutationPush 不返回类型,因为它不是静态函数,这是预期的,因为 extends Container 的使用以及它在我的 React 中的使用方式应用程序。我正在尝试找出一种方法,可以像这样在类中导出每个单独函数的类型。

编辑具体用例为

type Props = {
push: RouterState.mutationPush
}

那个错误

[flow] Cannot get RouterState.mutationPush because property mutationPush is missing in statics of RouterState [1]. (References: [1]) [Flow] mutationPush: any

Edit2:我尝试在类中添加类型导出

export type mutationPush: (pathname: string, data?: ?Object) => void

/* ... */

mutationPush: mutationPush = (pathname, data) => ...

但是无论我在哪里使用这个函数,流程助手都会说这个 mutationPush: mutationPush 而不是 mutationPush: (pathname: string, data?: Object) ...

最佳答案

您可以使用 $PropertyType实用程序类型以获取属性或方法的类型。

type Props = {
push: $PropertyType<RouterState, 'mutationPush'>
}

关于javascript - 流程,如何继承类函数类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50435558/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com