Jak importovat odvozený typ exportované funkce v TypeScriptu
Mám dva soubory myFunction.ts a index.ts.
myFunction.tsexportuje funkci takto:
export default (param1: string) => { return true }
index.tsimportuje tuto funkci takto:
import myFunction from './myFunction'
a pak chci použít typy z myFunction takto:
function bla(aFn: myFunction) {
aFn('hello')
}
Kompliátor mi však dává nelze najít název myFunction.
Jak získám typy pro exportovanou funkci?
Jako řešení můžete vytvořit a exportovat typ pro funkci takto:
export type MyFunctionType = (param1: string) => boolean
export default (param1: string) => { return true; }
A pak importujte takto:
import myFunction, { MyFunctionType } from './myFunction';
function bla(myFunction: MyFunctionType) {
myFunction('hello')
}
ale pak byste museli specifikovat typovou informaci dvakrát, což je něco, čemu bych se chtěl vyhnout...
Odpověď č. 1
Louy měl do určité míry pravdu. K získání informací o typu je potřeba použít typeof:
import myFunction from './myFunction'
function bla(myFunction: typeof myFunction) {
myFunction('hello')
}
Odpověď č. 2
Myslím, že mícháš typy a výchozí parametry nebo něco takového.
Typ a je Function. a není samostatný typ. Výchozí parametr lze určit takto:
function bla(aFn = a) {
aFn('hello');
}
Pokud místo toho potřebujete, aby aFn měl podpis podobný a, budete muset tento podpis specifikovat nebo pro něj vytvořit rozhraní.
function bla(aFn: (s: string) => boolean) {
aFn('hello');
}
Nebo...
interface a { (s: string): boolean; }
function bla(aFn: a) {
aFn('hello');
}
