501 Stimmen

Was ist der Unterschied zwischen den Typen String und string?

Kennt jemand den Unterschied zwischen String und string in TypeScript? Ist es richtig anzunehmen, dass sie gleich sein sollten?

var a: String = "test";
var b: string = "another test";
a = b;
b = a; // das gibt einen Kompilierungsfehler!

Die aktuelle Version des Compilers sagt:

Typ 'String' ist nicht zuweisbar zu Typ 'string'.
  'string' ist ein primitiver Typ, aber 'String' ist ein Wrapper-Objekt.
     Bevorzugen Sie 'string', wenn möglich.

Ist das ein Fehler?

5voto

Masih Jahangiri Punkte 6348

Einfache Antwort:

  • string => ist ein Typ. z.B. console.log(typeof 'foo') // string
  • String => ist ein Objekt mit einigen Methoden zur Erstellung und Manipulation von Zeichenketten.

3voto

WadeeSami Punkte 59

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 Bildbeschreibung hier eingeben

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.

2voto

dennisiluma Punkte 31
  1. string ==> primitiver Datentyp.
  2. String ==> nicht-primitiv. Es ist ein Objekt und hat Zugriff auf String-Klassenmethoden und -eigenschaften

1voto

Mizile Punkte 95

Diese Fehlermeldung weist darauf hin, dass Sie versuchen, einem Variablen oder Parameter vom Typ string einen Wert vom Typ String zuzuweisen. In TypeScript ist string ein primitiver Typ, der eine Sequenz von Zeichen darstellt, während String ein Wrapper-Objekt ist, das zusätzliche Methoden zum Arbeiten mit Zeichenketten bereitstellt.

Die Fehlermeldung schlägt vor, dass Sie den Typ string verwenden sollten, anstelle von String, wann immer möglich, da der Typ string effizienter ist und weniger damit verbundene Overhead-Kosten hat. Dies liegt daran, dass String ein Objekt ist und Objekte in JavaScript (und daher auch in TypeScript) im Heap gespeichert werden und zusätzliche Speicherplatzreservierungen erfordern, wenn sie erstellt werden. Im Gegensatz dazu werden string-Werte direkt auf dem Stapel gespeichert, was sie effizienter macht.

Um diesen Fehler zu beheben, müssen Sie sicherstellen, dass Sie den Typ string anstelle von String verwenden, wo erwartet wird. Sie können dies einfach tun, indem Sie String in Ihrem Code durch string ersetzen. Zum Beispiel, wenn Sie eine Variable mit dem Typ String haben, könnten Sie sie so ändern, dass sie den Typ string hat:

let myString: String = "Hallo, Welt!"; // Falsch
let myString: string = "Hallo, Welt!"; // Richtig

Es ist auch erwähnenswert, dass Sie im Allgemeinen immer string anstelle von String verwenden sollten, wenn möglich, da es effizienter und einfacher zu handhaben ist.

0voto

Basierend auf meiner persönlichen Referenz

Bevorzugen Sie das string über das String

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X