I am trying to figure out how to get type out of existing Typescript function and use it to define interface. I am working on React project and I want to pass action creator (function) to Props interface and then into React Component as Component<Props, State>.
Example action creator:
export function myFunction(foo: string = "bar") {
return {
type: "EXAMPLE_ACTION",
payload: foo,
}
}
Example component:
import React, { Component } from 'react'
import { connect } from "react-redux"
import { myFunction } from "actions"
export interface Props {
// This is what I'm trying to and and it ends up in ts error
myFunc: myFunction
}
class SomeComponent extends Component<Props, {}> {
render() {
return (
<div>
Example:
<button onClick={this.props.myFunc("baz")}>Click to dispatch</button>
</div>
)
}
}
export default connect(null, {
myFunction
})(SomeComponent)
I was thinking this could work, but frankly it's a typescript error:
[ts] Cannot find name 'myFunction'
I was wondering if i have to define a separate type to pass it to my component, something like this:
export type myFuncType = (foo: string) => { type: string, payload: string }
export const myFunction: myFuncType = (foo: string) => {
return {
type: "EXAMPLE_ACTION",
payload: foo,
}
}
but that seems too verbose and redundant and would need to import another export. Is there any other way around this?