Das asyncSchlüsselwort wird verwendet, um dem Compiler / der Laufzeit anzuzeigen, dass die betreffende Funktion awaitintern verwendet wird (damit sie das erforderliche Gerüst einsetzen kann, um sie zu aktivieren ).
Dies bedeutet, dass dies asyncnur für die Implementierung der Funktion von Bedeutung ist, nicht für die Schnittstelle . Daher asyncist es nicht sinnvoll, die Methode einer Schnittstelle zu verwenden. Sie möchten sagen, dass die Funktion eine bestimmte Promise(in Ihrem Fall Promise<string>) zurückgibt, aber Sie möchten nicht erzwingen, dass der Implementierer der Schnittstelle dies auf eine bestimmte Weise implementiert (using await).
Also wie andere vor mir sagten:
interface SearchFn {
(subString: string): Promise<string>;
}
Wer sich dann für die Implementierung dieser Funktion entscheidet, kann wählen, ob er eine asyncalte Promise.thenoder vielleicht sogar eine neue Methode verwenden möchte, die in Zukunft auftauchen wird.