typescript - Generische Funktion gibt Typ von <unknown> zurück, wenn ein Interface verwendet wird, das vom Zieltyp entkoppelt ist
Ich versuche, einen Hook in React zu erstellen, der den Wert aus einem RxJS-Observable zurückgibt, jedoch ohne eine feste Abhängigkeit von der RxJS-Bibliothek.
Also habe ich eine allgemeine Schnittstelle erstellt, die einen Teil der API des beobachtbaren Objekts beschreibt, mit dem ich interagieren werde.
export interface GenericSubscribable<T> {
subscribe: any
}
export const useObserverable = <T>(
s: GenericSubscribable<T>
): T => {
// the points don't matter
return {} as any
};
Jedoch beim Konsumieren davon
import { interval } from 'rxjs'
const counter = interval(1000) // Observable<number>
const shouldBeNumber = useObserverable(counter)
shouldBeNumber erscheint als <unknown> anstelle von <number>. Warum ist das so?
Beispiel für die Typableitung in einem ähnlichen Szenario
Antwort #1
Danke @see sharper für die Einsicht. Ich habe auf den falschen Wert geschaut. Das folgende Beispiel funktioniert.
export interface GenericSubscribable<T> {
subscribe: (cb: ((value: T) => any)) => any
}
export const useObserverable = <T>(
s: GenericSubscribable<T>
): T => {
return {} as any
};
