Notieren Sie sich das Schlüsselwort „infer“, um es später nicht zu vergessen. Es ist ein bisschen schwer zu verstehen. schließeninfer ist ein neues Schlüsselwort, das in TypeScript 2.8 hinzugefügt wurde. „infer“ kann in der „extended“-Klausel des bedingten Typs verwendet werden, um im realen Zweig auf diese abgeleitete Typvariable zu verweisen und so den abzuleitenden Typ abzuleiten. Beispiel: Verwenden Sie infer, um den Rückgabewerttyp einer Funktion abzuleiten Typ ReturnType<T> = T erweitert (...args: beliebig[]) => folgere R? R: beliebig; Typ fn = () => Zahl Typ fnReturnType = ReturnType<fn> // Zahl In diesem Beispiel Die Form T erweitert U? X: Y ist ein bedingter Typ. infer R stellt den abzuleitenden Rückgabewerttyp dar. Wenn T eine Funktion (...args: any[]) => infer R ist, gibt es den Rückgabewert R der Funktion zurück, andernfalls gibt es any zurück. Fallstudie: Vertiefen Sie Ihr Verständnis Ein Versprechen einlösen // Versprechen-Antworttyp Typ PromiseResType<T> = T erweitert Promise<infer R> ? R : T // Asynchrone Funktion strPromise() überprüfen { gib „String-Versprechen“ zurück } Schnittstelle Person { Name: Zeichenfolge; Alter: Anzahl; } asynchrone Funktion personPromise() { zurückkehren { Name: "p", Alter: 12 } als Person } Typ StrPromise = ReturnType<Typ von strPromise> // Promise<Zeichenfolge> // Inverser Typ StrPromiseRes = PromiseResType<StrPromise> // str Typ PersonPromise = ReturnType<Typ von PersonPromise> // Promise<Person> // Inverser Typ PersonPromiseRes = PromiseResType<PersonPromise> // Person Eingabetyp der inversen Funktion Typ Fn<A erweitert beliebig[]> = (...args: A) => beliebig Typ FnArgs<T> = T erweitert Fn<infer A> ? A : beliebig Funktion strFn (Name: Zeichenfolge) { } Typ StrFn = FnArgs<Typ von strFn> // [Zeichenfolge] Zu vereinigendes Tupel, zum Beispiel: [Zeichenfolge, Zahl] -> Zeichenfolge | Zahl Typ ElementOf<T> = T erweitert Array<infer E>? E: nie Typ TTuple = [Zeichenfolge, Zahl]; Typ ToUnion = ElementOf<ATuple>; // Zeichenfolge | Zahl neuer Operator // Parametertyp abrufen Typ ConstructorParameters<T extends new (...args: any[]) => any> = T extends new (...args: infer P) => any ? P : never; // Instanztyp abrufen Typ InstanceType<T extends new (...args: any[]) => any> = T extends new (...args: any[]) => R ableiten? R : any; Klasse TestClass { Konstruktor( öffentlicher Name: Zeichenfolge, öffentliche Zeichenfolge: Nummer ) {} } Typ Parameter = KonstruktorParameter<Typ der Testklasse>; // [Zeichenfolge, Nummer] Typ Instanz = Instanztyp<Typ der Testklasse>; // Testklasse Reagieren - Reduzierer //Funktion useReducer<R extends Reducer<any, any>, I> definieren( Reduzierstück: R, // ReducerState abgeleiteter Typ initializerArg: I & ReducerState<R>, Initialisierer: (Argument: I & ReducerState<R>) => ReducerState<R> ): [ReducerState<R>, Dispatch<ReducerAction<R>>]; // folgert, Typ ReducerState<R erweitert Reducer<beliebig, beliebig>> = R erweitert Reducer<folgert S, beliebig> ? S : niemals; // Reducer-Typ Typ Reducer<S, A> = (prevState: S, action: A) => S; // Reduzierer verwenden const Reducer = (x: Zahl) => x + 1; const [Status, Versand] = useReducer(Reducer, ''); // Argument vom Typ "" kann nicht dem Parameter vom Typ ‚Zahl‘ zugewiesen werden. vue3 - Referenz Exportschnittstelle Ref<T = any> { [isRefSymbol]: wahr Wert: T } Exportfunktion ref<T>(Wert: T): T erweitert Ref ? T : Ref<UnwrapRef<T>> Exporttyp UnwrapRef<T> = { cRef : T erweitert ComputedRef<infer V> ? UnwrapRef<V> : T ref: T erweitert Ref<infer V> ? UnwrapRef<V> : T Array: T Objekt: { [K in keyof T]: UnwrapRef<T[K]> } }[T erweitert ComputedRef<any> ? 'cRef' : T erweitert Array<beliebig> ? 'Reihe' : T erweitert Ref | Funktion | Sammlungstypen | Basistypen ? 'ref' // Bailout bei Typen, die nicht ausgepackt werden sollten : T erweitert Objekt? 'Objekt' : 'Ref'] // Verwenden von const count = ref({ foo: ref('1'), Balken: ref(2) }) // Abgeleitete konstante Anzahl: Ref<{ foo: Zeichenfolge; Balken: Zahl; }> const count = ref(2) // Ref<Zahl> const count = ref(ref(2)) // Ref<Zahl> sieheDas Schlüsselwort „infer“ in TypeScript verstehen Vue3 Folgen Sie Ihnen, Yuxi, um den TypeScript Ref-Typ von Grund auf zu lernen Verwenden von TypeScript (V) ---- infer Damit ist dieser Artikel über das vertiefte Verständnis der Verwendung des Schlüsselworts „infer“ in Typescript abgeschlossen. Weitere verwandte Inhalte zum Schlüsselwort „infer“ in Typescript finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird! Das könnte Sie auch interessieren:
|
Vorwort Dieser Artikel stellt hauptsächlich den r...
Inhaltsverzeichnis Zusammenfassen Zusammenfassen ...
Der Test wird in der Node.JS-Umgebung bestanden. ...
Nachdem die Systemzeit mit Java ermittelt und in ...
Lassen Sie uns zunächst über eine Frage nachdenke...
Inhaltsverzeichnis 1. Vorlage 2. Generika 3. Gene...
Senden von E-Mails mit der Mail-Funktion von PHP ...
In diesem Artikel wird der spezifische Code von j...
Wir sollten besser aufpassen, denn die HTML-Poliz...
Inhaltsverzeichnis Vorwort: 1. Kurze Einführung i...
Die Front- und Back-End-Ports von Vue sind inkons...
Inhaltsverzeichnis Hbase-Installation und -Konfig...
#mysql -uroot -p Passwort eingeben mysql> voll...
Vorwort Dieser Artikel enthält 1. Mehrere wesentl...
Vorwort In vielen Fällen werden wir virtuelle Mas...