Hur man importerar den härledda typen av en exporterad funktion i TypeScript
Jag har två filer myFunction.ts och index.ts.
myFunction.tsexporterar en funktion på följande sätt:
export default (param1: string) => { return true }
index.tsimporterar den funktionen så här:
import myFunction from './myFunction'
och sedan vill jag använda typerna från myFunction på följande sätt:
function bla(aFn: myFunction) {
aFn('hello')
}
Men kompilatorn ger mig ett kan inte hitta namnet myFunction.
Hur får jag typerna för den exporterade funktionen?
Som en lösning kan du skapa och exportera en typ för funktionen på följande sätt:
export type MyFunctionType = (param1: string) => boolean
export default (param1: string) => { return true; }
Och importera sedan så här:
import myFunction, { MyFunctionType } from './myFunction';
function bla(myFunction: MyFunctionType) {
myFunction('hello')
}
men då skulle du specificera typinformationen två gånger, vilket är något jag skulle vilja undvika...
Svar #1
Louy hade till viss del rätt. Du behöver använda typeof för att få typinformationen:
import myFunction from './myFunction'
function bla(myFunction: typeof myFunction) {
myFunction('hello')
}
Svar #2
Jag tror att du blandar typer och standardparametrar eller något.
Typen av a är Function. a är inte en typ i sig själv. Standardparametern kan specificeras på detta sätt:
function bla(aFn = a) {
aFn('hello');
}
Om du istället behöver att aFn har en signatur liknande a, måste du specificera den signaturen eller skapa ett gränssnitt för den.
function bla(aFn: (s: string) => boolean) {
aFn('hello');
}
Eller...
interface a { (s: string): boolean; }
function bla(aFn: a) {
aFn('hello');
}
