JavaScript hat 7 primitive Typen strings, numbers, booleans, null, undefined, symbol und bigint
, Die ersten fünf gibt es seit Anfang an, Der symbolische primitive Typ wurde in ES2015 hinzugefügt und bigint befindet sich im Prozess der Finalisierung.
Primitive werden von Objekten dadurch unterschieden, dass sie unveränderlich sind und keine Methoden haben. Man könnte argumentieren, dass strings doch Methoden haben
console.log('primitive'.charAt(3)) // Ausgabe ist "m"
Nun, obwohl ein String-Primitive keine Methoden hat, definiert JavaScript auch einen String-Objekttyp, der sie hat. JavaScript konvertiert frei zwischen diesen Typen. Wenn Sie auf eine Methode wie charAt auf einem String-Primitive zugreifen, wickelt JavaScript es in ein String-Objekt ein, ruft die Methode auf und wirft dann das Objekt weg.
TypeScript modelliert diesen Unterschied, indem es verschiedene Typen für die Primitiven und ihre Objekthüllen hat:
- string und String
- number und Number
- boolean und Boolean
- symbol und Symbol
- bigint und BigInt
normalerweise funktioniert es, wenn Sie String
anstelle von string
verwenden, außer dass in einigen Fällen der Compiler einen Fehler auslösen wird
Wie Sie sehen können, ist string
zuweisbar an String
, aber String
ist nicht zuweisbar an string
.
Folgen Sie dem Rat in der Fehlermeldung und bleiben Sie bei string. Alle mit TypeScript ausgelieferten Typdeklarationen verwenden dies, genauso wie die Typdefinitionen für fast alle anderen Bibliotheken.