76
votes

I notice in my application that TsLint is suggesting:

static $inject = [
        '$http',
        '$q',
        '$scope',
        'configService',
        'stateService',
        'utilityService'
    ];

for the above that:

Message 2   TsLint: ' should be "

Is this a suggested standard now for Typescript ?

7
BTW you can add a project local tslint file and change to a double quote standard "quotemark": [true, "double"]gravidThoughts

7 Answers

53
votes

This was the first result in my google search for: "double vs single quotes typescript."

Considering the accepted answer is a little old (but still valid from the docs) I would like to add this quote from: https://github.com/Microsoft/TypeScript/wiki/Coding-guidelines updated on November 27, 2015:

Use double quotes for strings.

Granted "the code is more what you'd call 'guidelines' than actual rules." :)

38
votes

I would go with single quotes. I pretty much agree with this guy:

  • Prefer single quotes (') unless escaping.

Reason: More JavaScript teams do this (e.g.airbnb, standard, npm, node, google/angular, facebook/react). Its easier to type (no shift needed on most keyboards). 

Prettier team recommends -single quotes as well double quotes

Also, even dotnet new templates use single quotes for Angular apps.

24
votes

There is no particular standard to use single quotes for characters and double quotes for string but it is suggested to use double quotes for strings and vice versa.

From the docs:

Just like JavaScript, TypeScript also uses the double quote (") or single quote (') to surround string data.

15
votes

The coding standards document as linked by @crowebird is a good document: https://github.com/Microsoft/TypeScript/wiki/Coding-guidelines

I like all the guidelines except for the double quotes - when it comes to using typescript with Angular 2.

This question isn't about Typescript with Angular 2, but readers may be Angular 2 users. Using single quotes makes for easier reading when marking up html strings in the typescript.

Take the following example:

@Component({
    ...,
    template: '<div class="some-class-name"></div>'
})

But if you are using double quotes you have to escape the double quotes:

@Component({
    ...,
    template: "<div class=\"some-class-name\"></div>"
})

The first option is preferable. Most of the Angular 2 demos use single quotes.

7
votes

Since it seems like there is no hard and fast answer, what's consistent across languages?

Bash/Powershell/Ruby: " enables interpolation and escape sequences. ' means the string is exactly as it is typed.

C-style languages (Java, C#, C++ etc): " is a string while ' for single characters.

Python/Javascript: no difference. If a string needs to contain ", you might delimit it with ' and vice versa.

JSON: double quotes only. This is the tilting argument.

Across languages, single quotes imply a lack of escape sequences and interpolation.

Typescript has backwards compatibility for ` (back-tick) strings so my preference is to use " (double quote) for non-escaped strings, generally free of white-space and in the following character set:

ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789- or [\w\d-]* in many regex dialects. This means you can copy pasta object literals into JSON and vice versa. Quite useful in practice for little investigations, tests, etc.

For everything else, ` (back-ticks) since it cuts down on escape sequences and enables interpolation.

Note: I am not an advocate of JSON, it just seems inescapable these days ;)

3
votes

If you are going to be embedding template strings, then back ticks:

`

Straight from here

const lyrics = 'Never gonna give you up';
const html = `<div>${lyrics}</div>`;

I personally prefer single quotes because '' vs "" is slightly less confusing to eyeball when dealing with empty string constant.

But it's ok to override that rule if you need embed a single quote. Use the double quotes to wrapper things to avoid escaping headaches.

Flexibility is the key.

0
votes

Locate your tslint.json file and change the following json setting(s)

"quotemark": [
      [
        true,
        "double"
      ],
      [
        true,
        "single"
      ]
    ],

This allows for single and double quote marks in your ts files.

When using Visual Studio a restart of Visual Studio might be required.