Erzwingen Typen für indizierte Member in TypeScript-Objekten
- Verwenden Sie zugeordnete Typen, um Typen für indizierte Elemente in TypeScript-Objekten zu erzwingen
- Verwenden Sie generische Typen mit zugeordneten Typen, um Typen für indizierte Elemente in TypeScript-Objekten zu erzwingen
-
Verwenden Sie den Typ
Record
, um Typen für indizierte Mitglieder in TypeScript-Objekten zu erzwingen
TypeScript ist eine stark typisierte Sprache, und alle Konstrukte, die als Teil dieser Sprache verwendet werden, sind stark typisiert. Es gibt Konstrukte wie Schnittstellen oder Typen, die primitive und benutzerdefinierte Typen kombiniert sind.
Man kann sogar komplexe Typen wie Maps oder Indextypen haben, die in TypeScript unter der Kategorie zugeordnete Typen liegen. Dieses Tutorial zeigt, wie zugeordnete Typen in TypeScript verwendet werden können.
Verwenden Sie zugeordnete Typen, um Typen für indizierte Elemente in TypeScript-Objekten zu erzwingen
Zugeordnete Typen können Objekte mit einem festen Schema mit festen Typen für die Schlüssel und die Werte in einem Objekt in TypeScript darstellen. Sie basieren auf der Syntax für Indexsignaturen.
type NumberMapType = {
[key : string] : number;
}
// then can be used as
const NumberMap : NumberMapType = {
'one' : 1,
'two' : 2,
'three' : 3
}
Anders als beim Festlegen des Typs der Schlüssel eines Objekts können zugeordnete Typen verwendet werden, um den Typ aller Schlüssel in einem Objekt mithilfe von Indexsignaturen zu ändern.
interface Post {
title : string;
likes : number;
content : string;
}
type PostAvailable = {
[K in keyof Post] : boolean;
}
const postCondition : PostAvailable = {
title : true,
likes : true,
content : false
}
Im Folgenden werden die Schlüssel der Schnittstelle Post
verwendet und auf einen anderen Typ, Boolean, abgebildet.
Verwenden Sie generische Typen mit zugeordneten Typen, um Typen für indizierte Elemente in TypeScript-Objekten zu erzwingen
Zugeordnete Typen können auch zum Erstellen generischer typisierter Objekte verwendet werden. Generische Typen können verwendet werden, um Typen mit dynamischen Typen zu erstellen.
enum Colors {
Red,
Yellow,
Black
}
type x = keyof typeof Colors;
type ColorMap<T> = {
[K in keyof typeof Colors] : T;
}
const action : ColorMap<string> = {
Black : 'Stop',
Red : 'Danger',
Yellow : 'Continue'
}
const ColorCode : ColorMap<Number> = {
Black : 0,
Red : 1,
Yellow : 2
}
Im obigen Beispiel wurde die Aufzählung Colors
im zugeordneten typisierten Objekt verwendet, und verschiedene Typen wurden entsprechend dem von ColorMap<T>
unterstützten generischen Typ erzwungen.
Verwenden Sie den Typ Record
, um Typen für indizierte Mitglieder in TypeScript-Objekten zu erzwingen
Der Typ Record
ist ein integrierter Typ in TypeScript und kann verwendet werden, um Typen für Objekte in TypeScript zu erzwingen. Der Typ Record
akzeptiert zwei Felder: die Typen für die Schlüssel und die Werte in einem Objekt.
Es kann als Karte angesehen werden, die in anderen Programmiersprachen zu finden ist.
const LogInfo : Record<string, string> = {
'debug' : 'Debug message',
'info' : 'Info message',
'warn' : 'Warning message',
'fatal' : 'Fatal error'
}
const message = LogInfo['debug'] + " : Hello world";
console.log(message);
Ausgabe:
Debug message : Hello world