Detaillierte Erklärung generischer Fälle in TypeScript

Detaillierte Erklärung generischer Fälle in TypeScript

Definition von Generika

// Anforderung 1: Generika können nicht angegebene Datentypen unterstützen. Dies erfordert, dass die übergebenen und die zurückgegebenen Parameter konsistent sind. // Obwohl diese Methode Konsistenz zwischen den übergebenen und zurückgegebenen Parametern erreichen kann, geht die Typparameterprüfung verloren. /*
Funktion getData(Wert: beliebig): beliebig {
    Rückgabewert „Erfolg“
}
*/

// Generika definieren, um Anforderung 1 zu erfüllen // T steht für Generika (der Großbuchstabe kann hier beliebig definiert werden, ist aber standardmäßig T) Der konkrete Typ wird beim Aufruf dieser Methode bestimmt function getData<T>(value: T):T{
    Rückgabewert;
}

//Eingehender String-Typ var get = getData<string>("hallo")
console.log(abrufen)

// Der übergebene Typ ist eine Zahl var getTwo = getData<Zahl>(666)
console.log(getTwo)

// Anforderung 2: Beispielsweise gibt es einen minimalen Heap-Algorithmus, der sowohl Zahlen als auch Zeichenfolgen zurückgeben muss. Dies kann durch Klassengenerika erreicht werden. // Klassengenerika definieren class minCla<T> {
    Liste: T[] = [];

    hinzufügen(Wert: T):void {
        diese.Liste.push(Wert);
    }

    min(): T {
        var minNum = diese.Liste[0];
        für(var i=0; i<diese.Liste.Länge; i++) {
            wenn (minNum > diese.Liste[i]) {
                minNum = diese.Liste[i]
            }
        }
        minNum zurückgeben
    }
}

var minNum = neue minCla<Zahl>();
minNum.add(2);
minNum.add(1);
minNum.add(7);
console.log(minNum.min()); // gibt 1 zurück


// Zeichen werden nach ASCII-Code verglichen var minNumTwo = new minCla<string>();
minNumTwo.add("c");
minNumTwo.add("z");
minNumTwo.add("a");
console.log(minNumTwo.min()) // Gibt einen

Generische Schnittstelle

// Zwei Möglichkeiten zur Implementierung generischer Schnittstellen // Methode 1:
// Definieren Sie eine generische Schnittstelle interface Func {
    <T>(Wert: T): T
}

// Definieren Sie eine Funktion zur Implementierung der generischen Schnittstelle var f: Func = function<T>(value: T) {
    Rückgabewert;
}
f<string>("hallo")
f<Zahl>(666)

// Methode 2:
Schnittstelle FuncONe {
    <T>(Wert: T): T
}

var f1: FuncONe = Funktion<T>(Wert: T):T {
    Rückgabewert;
}

f1<string>("Welt")
f1<Zahl>(666)

Implementieren generischer Klassen

/*
1. Definieren Sie eine Benutzerklasse, die zum Zuordnen von Datenbankfeldern verwendet wird. 2. Definieren Sie dann eine MysqlDb-Klasse, die zum Bedienen der Datenbank verwendet wird. 3. Übergeben Sie dann die Benutzerklasse als Parameter an MysqlDb. */

/*Version 1:
Klasse Benutzer {
    Benutzername: Zeichenfolge | nicht definiert;
    Passwort: Zeichenfolge | nicht definiert;
}

Klasse MysqlDb {
    add(Benutzer: Benutzer): boolean {
        console.log(Benutzer);
        gibt true zurück;
    }
}

var u1 = neuer Benutzer();
u1.Benutzername = "pika";
u1.password = "pika"

var msql = neue MysqlDb();
msql.add(u1);
*/

// Allerdings können die oben definierten Tabellen und Datenbanken die Richtigkeit der eingehenden Daten nicht garantieren // Version 2 // Definieren Sie die generische Klasse MysqlDb <T>{
    hinzufügen(info: T): boolean {
        konsole.log(info);
        gibt true zurück;
    }
}

// Definieren Sie eine Benutzerklasse und ordnen Sie sie der Datenbankklasse User { zu.
    Benutzername: Zeichenfolge | nicht definiert;
    Passwort: Zeichenfolge | nicht definiert;
}

var u1 = neuer Benutzer();
u1.Benutzername = "pika";
u1.password = "pika"

// Instanziieren Sie eine Datenbank (die Klasse wird als Parameter verwendet, um den Typ des eingehenden Parameters einzuschränken)
var msql = new MysqlDb<Benutzer>();
msql.add(u1); // Stellen Sie sicher, dass das Format der eingehenden Daten vom Typ „Benutzer“ ist

Umfassender Fall

brauchen:
Funktion: Definieren Sie eine Datenbankoperationsbibliothek zur Unterstützung von Mysql MongoDb
Anforderung 1: Mysql und MongoDb haben dieselben Funktionen, beide haben Methoden zum Hinzufügen, Aktualisieren, Löschen und Abrufen. Hinweis: Lösungen für eingeschränkte einheitliche Spezifikationen und Wiederverwendung von Code: Es sind eingeschränkte Spezifikationen erforderlich, daher müssen Schnittstellen definiert werden, und es ist eine Wiederverwendung von Code erforderlich, daher werden Generika verwendet. 1. Schnittstelle: In der objektorientierten Programmierung ist eine Schnittstelle eine Spezifikationsdefinition, die die Spezifikationen von Verhalten und Aktionen definiert. 2. Generika: Allgemeines Verständnis: Generika sollen die Wiederverwendbarkeit von Methoden der Klassenschnittstelle lösen*/

// Implementierungsprozess:
// Definieren Sie eine Schnittstelle, um alle Methoden einzuschränken Schnittstelle DbMethod<T> {
    hinzufügen (Info: T): Boolesch;
    Update (Info: T, ID: Nummer): Boolesch;
    löschen(id: Nummer): Boolesch;
    get(id: Nummer): Boolesch;
}

// Definieren Sie eine Mysql-Datenbankklasse. Hinweis: Um eine generische Schnittstelle zu implementieren, muss diese Klasse auch eine generische Klasse sein class MysqlDbs<T> implements DbMethod<T> {
    hinzufügen(info: T): boolean {
        konsole.log(info);
        gibt true zurück;
    }    
    
    update(info: T, id: Nummer): boolean {
        var obj = {
            Benutzername: "xxxx",
            Passwort: "666"
        }
        returniere wahr
    }

    löschen(id: Nummer): boolean {
        console.log("Löschen erfolgreich");
        returniere wahr
    }
    
    get(id: Nummer): boolean {
        var arr = [
            {Benutzername: "xxx",
            Passwort: "xxxxx"
            }
        ];
        returniere wahr
    }
}
// prüfen:
Klasse Benutzer {
    Benutzername: Zeichenfolge | nicht definiert;
    Passwort: Zeichenfolge | nicht definiert;
};

// Verwenden Sie die Klasse „Users“, um die Richtigkeit der in var mysql = new MysqlDbs<Users>(); übergebenen Parameter einzuschränken.
var u = neue Benutzer();
u.Benutzername = "xxxx"
u.passwort = "xxxxxx"
//Das Hinzufügen, Löschen, Ändern und Abfragen der Datenbank simulieren mysql.add(u);
mysql.get(1);
mysql.update(u, 1);
mysql.delete(1)



// Definieren Sie eine MongoDb-Datenbankklasse. Hinweis: Um eine generische Schnittstelle zu implementieren, muss diese Klasse auch eine generische Klasse sein. class MongoDb<T> implements DbMethod<T> {
    hinzufügen(info: T): boolean {
        konsole.log(info);
        gibt true zurück;
    }    
    
    update(info: T, id: Nummer): boolean {
        var obj = {
            Benutzername: "xxxx",
            Passwort: "666"
        }
        returniere wahr
    }

    löschen(id: Nummer): Boolesch {
        console.log("Löschen erfolgreich");
        returniere wahr
    }
    
    get(id: Nummer): boolean {
        var arr = [
            {Benutzername: "xxx",
            Passwort: "xxxxx"
            }
        ];
        returniere wahr
    }
}

// prüfen:
Klasse Userd {
    Benutzername: Zeichenfolge | nicht definiert;
    Passwort: Zeichenfolge | nicht definiert;
};

// Verwenden Sie die Klasse „Users“, um die Richtigkeit der in var mysql = new MongoDb<Userd>(); übergebenen Parameter einzuschränken.
var u = neuer Userd();
u.Benutzername = "xxxx"
u.passwort = "xxxxxx"
//Das Hinzufügen, Löschen, Ändern und Abfragen der Datenbank simulieren mysql.add(u);
mysql.get(1);
mysql.update(u, 1);
mysql.delete(1)

Dies ist das Ende dieses Artikels über die detaillierte Fallanalyse von Generika in TypeScript. Weitere relevante Inhalte zu Generika in TypeScript finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • So erklären Sie TypeScript-Generika auf einfache Weise
  • Standardtypen für generische TypeScript-Parameter und neue Option zur strikten Kompilierung
  • Tiefgreifendes Verständnis der generischen Konzepte von Typescript im Frontend
  • Erfahren Sie, wie Sie mit Webpack TypeScript-Code verpacken und kompilieren
  • Tiefgreifendes Verständnis der Verwendung des Schlüsselworts „infer“ in Typescript
  • Warum TypeScripts Enum problematisch ist

<<:  Lösen Sie das Problem der Groß- und Kleinschreibung der Linux+Apache-Server-URL

>>:  Eine kurze Analyse der Verwendung von USING und HAVING in MySQL

Artikel empfehlen

Lernen Sie MySQL Index Pushdown in fünf Minuten

Inhaltsverzeichnis Vorwort Was ist Index-Pushdown...

Wichtige Hinweise zu PHP-HTMLhtml-Wissenspunkten (unbedingt lesen)

1. Verwenden Sie Frameset, Frame und Iframe, um m...

Analyse des Implementierungsprozesses der drei Modi des VMWare-Netzwerkadapters

Drei Modi Bridged (Bridge-Modus), NAT (Network Ad...

Installations- und Konfigurationstutorial von MySQL 8.0.16 unter Win10

1. Entpacken Sie MySQL 8.0.16 Der Ordner dada und...

Natives JavaScript-Message Board

In diesem Artikel wird der spezifische JavaScript...

Detaillierte Erklärung des FreeList-Mechanismus von MySQL

1. Einleitung Nach dem Start von MySQL wird Buffe...

Kopieren Sie den Inhalt einer Datei an das Ende einer anderen Datei in Linux

Problembeschreibung: Der Inhalt der Datei 11 laut...

Windows Server 2008-Tutorial zur Überwachung der Serverleistung

Als Nächstes erfahren Sie, wie Sie die Serverleis...

So erstellen Sie MySQL-Indizes richtig

Die Indizierung ähnelt dem Erstellen bibliografis...

Vue implementiert Klick-Feedback-Anweisungen für den Wasserwelleneffekt

Inhaltsverzeichnis Wasserwelleneffekt Sehen wir u...

Detaillierte Einführung in den MySql-Index und korrekte Verwendungsmethode

Detaillierte Einführung in den MySql-Index und ko...