Gibt es eine Möglichkeit, das Objekt gleichzeitig mit optionalen und erforderlichen Schlüsseln zu definieren?
Warum nicht einfach einen Dreier verwenden? optionKey1: someCondition ? value : undefined?
– Andreas Li
19. Dezember 2017 um 17:21 Uhr
@FelixKling Ich denke, das ist eine weitgehend theoretische Unterscheidung, da in Knoten- / Browserumgebungen kein “vollständiger” ES6- oder ES7-Standard implementiert ist und die meisten Benutzer sowieso Transpiler verwenden.
– Andreas Mao
20. Dezember 2017 um 18:49 Uhr
Nun, es definiert den Spielraum für Antworten. Wir wissen nicht, was Sie verwenden. Außerdem möchte ich nicht, dass die Leute den Begriff ES7 für experimentelle Funktionen missbrauchen.
– Felix Klinge
20. Dezember 2017 um 18:53 Uhr
@FelixKling Ich frage nach jedem Standard von Ecmascript; Offensichtlich sind vorhandene unterstützte Standards besser. Wenn dies mit experimentellen Funktionen möglich ist, okay. Wenn es mit ES6 oder ES7 geht, besser. Wenn es mit ES5 möglich ist, super!
– Andreas Mao
20. Dezember 2017 um 18:55 Uhr
Ich würde gerne sowas sehen { key?: optionalValue } oder mit Eigenschaftskürzel: { optionalValue? }
– cimak
14. November 2020 um 23:31 Uhr
Ori Drori
Sie können verwenden Objekt verbreitet um eine optionale Eigenschaft zu haben:
Gute Antwort, aber es ist erwähnenswert, dass dadurch optionalKey1 erscheint immer noch als einer der Schlüssel des Objekts, wenn die Bedingung falsch ist (und den Wert null hat), wohingegen das ursprüngliche Snippet von OP ein Objekt erstellt, dem der Schlüssel vollständig fehlt, wenn die Bedingung falsch ist.
– CRice
19. Dezember 2017 um 17:32 Uhr
Ich denke, zuordnen null der Eigenschaft ist verständlicher, dass sie optional ist und keinen Wert hat, als auf Existenz zu prüfen
– Suren Srapjan
19. Dezember 2017 um 17:53 Uhr
Ich persönlich möchte eine Art Fehler erhalten, und im Allgemeinen würde mir eine Sprache (und insbesondere JavaScript) das Verhalten geben, wenn ich versuche, auf eine nicht vorhandene Eigenschaft zuzugreifen, anstatt sie nullfähig zu machen, da sie es ist niemals einen Wert haben wird, im Gegensatz zu dem, wofür Nullable-Werte verwendet werden – es muss existieren, es existiert. Wenn es nicht beendet werden muss, muss es nicht – ich denke, das macht mehr Sinn.
– Gal Grünfeld
1. Dezember 2020 um 18:39 Uhr
@SurenSrapyan fügt eine hinzu Optional Mitglied mit null Wert macht es nicht optional. Es bedeutet, dass das Objekt eine hat tatsächlich Mitglied, dessen zugewiesener Wert ist null was eigentlich ist ein Wert. Das magst du denken null ist kein Wert, aber es ist. Daher wird ein Mitglied dadurch nicht optional. Ein optionales Mitglied wäre eines, das nicht von zurückgegeben würde Object.entries(obj) Funktion. Wenn Sie ihm zumindest einen Wert zuweisen würden undefined was bedeuten würde, dass das Mitglied ist nicht definiert und ihm ist kein Wert zugeordnet. Object.entries(obj) würde das Mitglied trotzdem sehen.
– Robert Koritnik
8. August um 14:20 Uhr
Das folgende Muster ist in Javascript üblich
Es sollte nicht. Viele Objekte mit unterschiedlichen Formen zu haben, kann zu Leistungseinbußen führen. Datensätze sollten immer die gleichen Schlüssel enthalten. Also einfach benutzen
Das Muster ist wirklich nützlich bei Objekten, die Sie als Optionen übergeben.
– krulik
10. Dezember 2019 um 10:24 Uhr
@krulik Optionsobjektparameter können normalerweise ganz gut damit umgehen undefined Eigenschaften, ohne sie von nicht existierenden Eigenschaften zu unterscheiden.
– Bergi
10. Dezember 2019 um 11:56 Uhr
11757600cookie-checkPrägnante/prägnante Syntax für ‘optionale’ Objektschlüssel in ES6/ES7?yes
Warum nicht einfach einen Dreier verwenden?
optionKey1: someCondition ? value : undefined
?– Andreas Li
19. Dezember 2017 um 17:21 Uhr
@FelixKling Ich denke, das ist eine weitgehend theoretische Unterscheidung, da in Knoten- / Browserumgebungen kein “vollständiger” ES6- oder ES7-Standard implementiert ist und die meisten Benutzer sowieso Transpiler verwenden.
– Andreas Mao
20. Dezember 2017 um 18:49 Uhr
Nun, es definiert den Spielraum für Antworten. Wir wissen nicht, was Sie verwenden. Außerdem möchte ich nicht, dass die Leute den Begriff ES7 für experimentelle Funktionen missbrauchen.
– Felix Klinge
20. Dezember 2017 um 18:53 Uhr
@FelixKling Ich frage nach jedem Standard von Ecmascript; Offensichtlich sind vorhandene unterstützte Standards besser. Wenn dies mit experimentellen Funktionen möglich ist, okay. Wenn es mit ES6 oder ES7 geht, besser. Wenn es mit ES5 möglich ist, super!
– Andreas Mao
20. Dezember 2017 um 18:55 Uhr
Ich würde gerne sowas sehen
{ key?: optionalValue }
oder mit Eigenschaftskürzel:{ optionalValue? }
– cimak
14. November 2020 um 23:31 Uhr