Wenn wir in TypeScript einen Objekttyp definieren möchten, gibt es mehrere prägnante Optionen wie „Object“, „{}“ und „Object“. Was sind die Unterschiede zwischen ihnen?
Objekt (in Großbuchstaben) beschreibt Eigenschaften, die allen JavaScipt-Objekten gemeinsam sind. Es ist in der Datei lib.es5.d.ts definiert, die mit der TypeScript-Bibliothek geliefert wird.
Wie Sie sehen können, enthält es einige allgemeine Eigenschaften wie toString(), valueOf() usw.
Weil es nur die Eigenschaften hervorhebt, die JavaScript-Objekten gemeinsam sind. Sie können ihm also boxbare Objekte wie String, Boolean, Zahl, Bigint, Symbol zuweisen, aber nicht umgekehrt.
{} beschreibt ein Objekt, das keine eigenen Mitglieder hat, was bedeutet, dass TypeScript sich beschwert, wenn Sie versuchen, auf seine Eigenschaftsmitglieder zuzugreifen:
Aus dem obigen Codebeispiel können wir ersehen, dass {} und Object (in Großbuchstaben) dieselben Funktionen haben. Das heißt, es kann nur auf die gemeinsamen Eigenschaften zugreifen (auch wenn die JavaScript-Codelogik korrekt ist), alle boxbaren Objekte können ihm zugewiesen werden usw.
Das liegt daran, dass der Typ {} über die Prototypenkette auf diese allgemeinen Eigenschaften zugreifen kann und auch keine eigenen Eigenschaften hat. Es verhält sich also genauso wie der Typ „Object“ (in Großbuchstaben). Aber sie vertreten unterschiedliche Konzepte.
Objekt (in Kleinbuchstaben) bezeichnet jeden nicht-primitiven Typ, der im Code wie folgt ausgedrückt wird:
type PrimitiveType = | undefined | null | string | number | boolean | bigint | symbol; type NonPrimitiveType = object;
Das bedeutet, dass ihm nicht alle nicht-primitiven Typen zuweisbar sind und umgekehrt.
Im Quellcode vieler gängiger Bibliotheken sehen wir möglicherweise Record
Wenn Sie meine Inhalte hilfreich finden, erwägen Sie bitte ein Abonnement. Ich versende jeden Sonntag einen _ wöchentlichen Newsletter _ mit den neuesten Updates zur Webentwicklung. Danke für deine Unterstützung!
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3