Website-Suche

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
};