TypeScript " oder '? Die machen mich fertig...

Status
Für weitere Antworten geschlossen.
Registriert
Nov. 2017
Beiträge
7.835
(der Versuch danach zu googeln war nicht wirklich erfolgreich -> kam nur Schrott bei raus. Hat jemand die englischen Vokabeln dafür parat?)

Hi,

gibt's hier Leute die Typescript wirklich beherschen? Ich stehe vor der Frage, warum die Texte einmal in "Anführungszeichen", ein anderes mal in 'Hochkomma' dargestellt werden. Bzw. was denn nun die richtige Schreibweise ist.

Darüber gestolpert bin ich in VSCode nach der Installation des Prettier Code formatter, der überall Hochkomma durch Anführungszeichen ersetzen will. Ich würde ihm das ja per Config austreiben wollen, allerdings hat das Ding 9 Millionen Downloads, was ich als Zeichen dafür sehe dass der Autor grundsätzlich weiß was er macht. Also frage ich lieber mal nach.
 
In JavaScript (und demnach auch TypeScript) gibt es 3 Möglichkeiten literale strings zu definieren. Zwischen " und ' gibt es keinen Unterschied, außer, dass du das jeweils andere escapen musst. Zuletzt gibt es noch `, dass du zum Interpolieren nutzen kannst: `Hallo ${name}!`.

Wenn ich es recht in Erinnerung habe, hat sich Prettier als Ziel gesetzt einfach "eine einzig richtige Variante" zu haben, ohne Konfigurationsmöglichkeit. Daran ist nichts besser oder schlechter, es ist einfach die Präferenz des/r Entwickler des Formatters. Die kann dir gefallen, dann ist es was für dich, oder aber auch nicht, dann solltest du dir was anderes suchen. Mir gefällt es nicht, deshalb nutze ich etwas anderes.
 
  • Gefällt mir
Reaktionen: Hayda Ministral
Hayda Ministral schrieb:
gibt's hier Leute die Typescript wirklich beherschen?
Ja, schon, aber ...

Hayda Ministral schrieb:
Ich stehe vor der Frage, warum die Texte einmal in "Anführungszeichen", ein anderes mal in 'Hochkomma' dargestellt werden. Bzw. was denn nun die richtige Schreibweise ist.
... das hat überhaupt nichts mit TypeScript zu tun. Das stammt aus JavaScript.

Fachbegriff wäre wohl sowas wie "javascript single vs double quote"

Grundsätzlich wird aber beides identisch behandelt. Mit Ausnahmen wie z.B. in JSX, was aber eigentlich auch kein wirkliches JavaScript mehr ist. Und in JSON sind single quotes natürlich auch nicht erlaubt. Wenn du also (warum auch immer) JSON als String schreiben willst, dann ist const j = '{"foo": true}'; einfacher als const j = "{\"foo\": true}";.

Wenn du z.B. ESLint nimmst, dann ist dort Double Quote als Standardeinstellung vorhanden. Und je nach dem wessen Style Guide du liest, steht wieder was anderes drin.

Bagbag schrieb:
Zuletzt gibt es noch `, dass du zum Interpolieren nutzen kannst: `Hallo ${name}!`.
Funktioniert natürlich auch ohne Interpolation. Und man kann Line Breaks einbauen ohne \n schreiben zu müssen. Allerdings hab ich auch schon diverse Libs entdeckt, die es damit übertrieben haben und meinen kompilierten Code aufblähen weil darin sowas vorkommt wie:
Code:
function foo() {
  const s = `
    bla {
      bla bla bla
    }
    foo:
      bar

  `;
}
Die ganzen Einrückungen und Leerzeichen bleiben erhalten, weil der Compiler einfach nur einen String sieht und nicht die Semantik dahinter versteht:
Code:
const s = "\n    bla {\n      bla bla bla\n    }\n    foo:\n      bar\n    \n  ";
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Hayda Ministral und sparvar
Danke euch!
Einen Teil davon, den für mich wesentlichen, habe ich vermutlich verstanden. :-)
Insbesondere auch der Hinweis auf JSON war hilfreich.

PS: Auch die korrekten Stichworte waren natürlich hilfreich. Was ich damit hier in #101 gefunden habe klingt einigermaßen plausibel als grobe Richtschnur:

Code:
Single quotes:
    Airbnb
    Facebook
    Google
    Grunt
    Gulp.js
    Node.js
    npm (though not defined in the author's guide)
    Wikimedia
    WordPress
    Yandex

No preference:
    Three.js

Double quotes:
    TypeScript
    Douglas Crockford
    D3.js (though not defined in .eslintrc)
    jQuery

Ich werde dann wohl mal den Kampf mit dem Drachen Formater aufnehmen.
 
Zuletzt bearbeitet:
Man macht manchmal aus der Not eine Tugend (jdfs in anderen Sprachen, aber wird hier nicht anders sein) und fügt sich gedanklich spezifische Semantik zu den Varianten hinzu. Salopp gesagt z.B. double-quotes für die default Strings, single-quotes nur für 'längere/kompliziertere/multiline/konstruierte' strings.
 
Prettier ist ein Formatter der neueren Generation und setzt seine Meinung sehr robust durch. Man kann da auch nicht viel konfigurieren, dazu ist der nicht gedacht. Die Idee hinter einem Formatter wie Prettier ist das der wirklich alles vollautomatisch macht und man keine Entscheidungen zur Formatierung mehr treffen muss.

Ist natürlich Geschmackssache, aber ich finde es persönlich sehr angenehm da es das Thema Formatierung praktisch komplett rausnimmt und ich nicht mehr darüber nachdenken muss. Natürlich macht Prettier nicht alles so wie ich es bevorzugen würde, aber insgesamt ist es mir trotzdem vollautomatisch deutlich angenehmer.

Wenn das nicht nach deinem Geschmack ist, solltest du Prettier gar nicht verwendet. Typescript ist auch nicht an Prettier gebunden, hat eigentlich gar nichts damit zu tun.
 
  • Gefällt mir
Reaktionen: BeBur
@Dalek: Ich sehe das genau wie Du. Und es wäre schon schade, wenn ich Prettier wieder abwählen muss nur weil er mit TS nicht umgehen kann und Ersetzungen durchführt die zu fehlerhaftem Code im Sinne eines (nicht "des", es ist nur einer der möglichen - aber der an den ich mich binden möchte) Styleguide führen.
 
Hayda Ministral schrieb:
@Dalek: Ich sehe das genau wie Du. Und es wäre schon schade, wenn ich Prettier wieder abwählen muss nur weil er mit TS nicht umgehen kann und Ersetzungen durchführt die zu fehlerhaftem Code im Sinne eines (nicht "des", es ist nur einer der möglichen - aber der an den ich mich binden möchte) Styleguide führen.

Prettier hat kein Problem mit Typescript, und sollte auf keinen Fall Typescript code kaputt machen. Wenn das passiert dann läuft irgendwas anderes falsch.
 
Hayda Ministral schrieb:
im Sinne eines Styleguide
Dann nimm einen anderen Guide oder verzichte drauf, oder denk dir deinen eigenen aus.
Style Guides sind was für größere Projekte mit mehreren Mitarbeitern, damit man sich einfacher in fremden Code zurechtfindet und/oder unkompliziert per search and replace was am ganzen Projekt verändern kann.
Als nächstes passt sonst die Einrückung nicht: tabs, 2 Spaces, 4 Spaces? Oder:
Extra Leerzeile am Ende der Datei? Oder: geschweifte Klammern in dieselbe Zeile wie den Funktionsnamen, oder in die nächste Zeile setzen? Oder: Extra Leerzeichen zwischen if/for und der runden Klammer? Oder: überall Semikolon benutzen vs. überall drauf verzichten vs. nur bei imports und exports drauf verzichten?

Es gibt eine Fantastilliarde Kombinationsmöglichkeiten - keine davon ist richtig (und keine ist falsch). Halte dich an irgendeine davon und gut ist.
Im nächsten Projekt wo man einsteigt, weht eh wieder ein anderer Wind und man darf sich umgewöhnen.

Wenn prettier konfigurierbar wäre, würde ich es sicherlich auch nutzen, weil ich es dann an die Projekte anpassen könnte. Aber so? Kannste knicken. :skull_alt: Irgendjemand hat immer ein tief verwurzeltes Trauma bzgl. irgendeiner der Voreinstellungen.
Mir persönlich ist 100% perfektes Code Formatting sch...vollkommen egal. Es muss halbwegs einheitlich sein und gut leserlich. D.h. es sollte Einrückungen und Leerzeilen an den nötigen Stellen geben. Ordentliche und aussagekräftige Funktions- und Variablennamen sind das A und O. Fertig.
Ob da jetzt irgendwo mal Single Quotes statt Double Quotes (oder umgekehrt) benutzt werden, oder mal ein Semikolon unterschlagen wurde, stört mein Verständnis und meinen Lesefluss überhaupt nicht. (Aber ich hab auch schon diverse Feingeister kennengelernt, denen davon ganz übel wird)

Ich will den Code danach schließlich nicht auf eine Tapete drucken oder als Gedichtband verkaufen.
Das ist nur meine Meinung! :D

Gefühlt ist das aber hauptsächlich ein Problem von Skriptsprachen. Bei C(++), Java, C# und co. hat man zwar theoretisch genau so viele Freiheiten, aber mehr als 2-3 minimal unterschiedliche Stile sind da nicht in der freien Wildbahn zu finden.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: floTTes und BeBur
Nochmal: Du rennst offene Türen ein. Falls ich es nicht schaffe Prettier auf Single Quotes umzustellen werde ich einfach auf das Tool verzichten.
Und etwas Kontext zum Abschluß: Ich mache das nicht alleine sondern bin Teil einer Lerngruppe. Wir verwenden SQ und das ist ein Fixpunkt.

@MoD: der Thread kann geschlossen werden.
 
Hayda Ministral schrieb:
Nochmal: Du rennst offene Türen ein. Falls ich es nicht schaffe Prettier auf Single Quotes umzustellen werde ich einfach auf das Tool verzichten.
Und etwas Kontext zum Abschluß: Ich mache das nicht alleine sondern bin Teil einer Lerngruppe. Wir verwenden SQ und das ist ein Fixpunkt.

@MoD: der Thread kann geschlossen werden.

Man kann Prettier umstellen bei dem Verhalten, siehe https://prettier.io/docs/en/options.html#quotes

Wobei ich nicht verstehe wieso das ein hartes Ausschlusskriterium ist. Auch wenn man es nicht umstellt, kann man immer noch Single Quotes nehmen wenn man in dem String double quotes drin hat, bzw. das macht Prettier dann von alleine.
 
Du siehst ein Problem? Und Du verstehst dieses Problem nicht das Du siehst? Das tut mir sehr leid für Dich! Magst Du Deinen Schmerz mit uns teilen?

Scherz beiseite. Ich habe doch nun wirklich alles mögliche getan um darzulegen dass es mir eben nicht um ein Problem geht sondern dass ich nur wissen wollte was denn nun der bessere/verbreiterte Standard ist und mit welchen Keywords ich danach suchen muss. Beides wurde beantwortet, die Keywords wurden benannt und mit den Keywords bin ich natürlich inzwischen in der Config fündig geworden.

@ Moderation: Ich hatte schon darum gebeten das hier zu schließen. Die Frage wurde beantwortet, es gibt nichts mehr hinzuzufügen und jeder weitere Beitrag ist eigentlich nur noch primär dazu geeignet die Popcorn-Aktien zu manipulieren.
 
Ein Nachtrag, nachdem ich aus meiner Lerngruppe darauf aufmerksam gemacht wurde dass das nicht selbsterklärend ist...(und weil ich das garantiert nächste Woche schon wieder vergessen habe)

Pettier hat die Einstellung im PLugin ignoriert, diverse Diskussionen deuten an dass das passiert sobald eine .editorconfig im Projektverzeichnis liegt. Also diese Datei geöffnet und folgendes zugefügt:
Code:
[*.ts]
quote_type = single

...schon klappts auch mit der Nachbarin den SingleQuotes.
 
Lustig. Erst eine Threadschließung von der Moderation fordern, weil ja angeblich keine sinnvollen Beiträge mehr kommen und dann selbst was nachposten. :-)
 
Und damit ist auch Feierabend hier.
Die letzten beiden Posts hättet ihr euch beide sparen können und vor allem auch sollen.
lock.png
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben