Deklarieren Sie Karten- oder Listentyp in TypeScript
Abbildungen und Listen sind die grundlegenden Datenstrukturen, die in jeder Programmiersprache zum Schreiben von Anwendungslogik verwendet werden. Eine Karte wird verwendet, um Datenelemente schnell aus einem Speicher abzurufen, während eine Liste eine Datenstruktur ist, in der Datenelemente sequentiell gespeichert werden.
TypeScript allein unterstützt keine Map- oder List-Typen; Es ist jedoch sehr einfach, die erforderlichen Typen mit den integrierten Typen in TypeScript zu erstellen.
Deklarieren Sie Record
und Map
Geben Sie TypeScript ein
TypeScript hat den Typ Record
eingeführt, der Kartentypen mit Schlüssel-Wert-Paaren unterstützen kann und über generische Typen zur Unterstützung von Karten verschiedener Typen verfügt.
Genauer gesagt bedeutet Record<K,V>
, dass ein Objekt nur Schlüssel vom Typ K
akzeptiert und die den Schlüsseln entsprechenden Werte vom Typ V
sein sollten.
key of Record<K,V>
würde K
als Typ ergeben und Record<K,V>[K]
ist äquivalent zu V. Der Record
-Typ ist ein Alias für Indexsignaturen wie { [ Taste : K] : V }
.
const colorMap : Record<string, string> = {
'ylw' : 'yellow',
'blk' : 'black',
'bl' : 'blue'
};
Wenn wir also die generischen Typen verwenden, können wir mehrere Typen für den Map- oder Record
-Typ in TypeScript haben. Nach der Kompilierung wird das folgende typisierte Objekt zu einem einfachen Objekt in JavaScript.
Nebst dem typisierten Objekt verfügt natives Javascript über die Map
-Funktion, die eine neue Map
-Instanz initialisieren kann. Es hat eine ganze Reihe von unterstützten Funktionen, die damit verbunden sind.
Das folgende Codesegment zeigt, wie die Funktion Map
verwendet werden kann, um ein neues Map
-Objekt zu initialisieren.
const colorMap = new Map<string, string>();
colorMap.set("ylw", "yellow");
colorMap.set("blk", "black");
colorMap.forEach( ( v, k , _) => {
console.log( "key : " + k + ", value : " + v);
})
// keys
var keyList : string[] = [...colorMap.keys()];
console.log(keyList);
// values
var valueList : string[] = [...colorMap.values()];
console.log(valueList);
Ausgang:
"key : ylw, value : yellow"
"key : blk, value : black"
["ylw", "blk"]
["yellow", "black"]
Neben den gezeigten Funktionen unterstützt es auch andere Funktionen wie Löschen
und Löschen
. Diese werden zum Löschen eines einzelnen Eintrags aus der Karte bzw. zum Löschen aller Einträge aus der Karte verwendet.
Deklarieren Sie List
Typ in TypeScript
In TypeScript gibt es keinen eingebauten Listentyp; TypeScript bietet jedoch den Typ Array
zum Speichern zusammenhängender Datenelemente. Es ist einfach, eine Listendatenstruktur ADT mit dem Typ Array
zu erstellen.
class List<T> {
private items : Array<T>;
constructor(n? : number, defaultValue? : T){
if ( n === undefined) {
this.items = [];
} else {
if ( n && defaultValue){
this.items = Array(n).fill(defaultValue);
} else {
this.items = Array(n);
}
}
}
push(item : T){
this.items.push(item);
}
pop(item : T){
return this.items.pop();
}
get(index : number) : T | undefined {
return this.items[index];
}
set( index : number, item : T){
this.items[index] = item;
}
getItems() : Array<T> {
return this.items;
}
}
List.prototype.toString = function listToString(){
return JSON.stringify(this.getItems());
}
var list : List<string> = new List(5, "default");
list.set(1, "second");
list.set(0, "first");
console.log(list.toString());
Ausgang:
"["first","second","default","default","default"]"
Das Obige zeigt ein grundlegendes Beispiel für den Aufbau einer Listen-ADT; Mit einigen grundlegenden Funktionen kann es leicht erweitert werden, um jede Liste zu unterstützen, die in der Anwendungslogik erforderlich ist.