Me pregunto cómo este código escrito en JavaScript
const stuff = useCallback(() => { function first() { return "firstStaff"; } function major() { return "majorStaff"; } major.first = first; return major; })(); Se puede escribir con los tipos correctos en TypeScript, por lo que tiene las sugerencias correctas para stuff() y stuff.first()
Podemos definir un tipo mediante la combinación de varios tipos como este para lograr requerido
type Stuff = { first: () => string } & (() => string); const stuff: Stuff = useCallback(() => { ... })(); stuff.first(); stuff();Si está interesado en la tipificación de propiedades estáticas de funciones, puede usar este ejemplo:
import { useCallback } from 'react' interface Major { (): string first: () => string } const stuff = useCallback((): Major => { function first() { return "firstStaff"; } function major() { return "majorStaff"; } major.first = first; return major; }, [])();Consulte esta pregunta/respuesta si desea obtener más información sobre cómo escribir propiedades de funciones estáticas
useCallback necesita una matriz de dependencia como el segundo argumento, entonces se puede inferir por sí mismo
import { useCallback } from "react"; export default function App() { const stuff = useCallback(() => { function first() { return "firstStaff"; } function major() { return "majorStaff"; } major.first = first; return major; }, []); return ( ... ); }Ejemplo de trabajo: