在Typescript中使用引号的标准是什么?

Sam*_*tar 58 typescript tslint

我在申请中注意到TsLint建议:

static $inject = [
        '$http',
        '$q',
        '$scope',
        'configService',
        'stateService',
        'utilityService'
    ];
Run Code Online (Sandbox Code Playgroud)

对于上述情况:

Message 2   TsLint: ' should be "
Run Code Online (Sandbox Code Playgroud)

这是一个适用于Typescript的建议标准吗?

cro*_*ird 40

这是我谷歌搜索中的第一个结果:"双引号和单引号打字稿".

考虑到已接受的答案有点旧(但仍然有效,从文档中)我想添加以下引用:https: //github.com/Microsoft/TypeScript/wiki/Coding-guidelines在2015年11月27日更新:

对字符串使用双引号.

当然,"代码比实际规则更像你所谓的'指导'." :)

  • 来自typescript devs本身 - [TypeScript Github问题#5811](https://github.com/Microsoft/TypeScript/issues/5811#issuecomment-160187924):_"但是要专门回答你的问题,我们偶尔会用其他语言工作比TypeScript.所有这些语言要么需要双引号用于字符串(例如C#,C++,F#),要么至少允许双引号用于字符串(例如Python,Ruby).在切换回来时,不要求人们转移他们的肌肉记忆更容易在语言之间."_ (30认同)
  • 来自该页面:“这些是 TypeScript 贡献者的编码指南,这不是 TypeScript 社区的规定指南” (3认同)
  • 值得一提的是,链接指南不得视为社区代码指南。它们专用于内部Typescript代码库贡献者。 (2认同)
  • 单引号更容易输入(没有 shift 键)但双引号适用于几乎所有语言的字符串 - 对于许多(大多数?)语言都需要它们 - 似乎是默认为 double 的一个很好的理由处处引述 (2认同)
  • 在红宝石中,计划进行插值时仅使用双引号是有意义的。每当我看到单引号时,我都认为字符串中不会发生任何事情。 (2认同)

Saš*_*vić 30

我会用单引号.我非常赞同这个人:

  • 除非转义,否则首选单引号(').

原因:更多JavaScript团队这样做(例如airbnb,标准,npm,节点,google/angular,facebook/react).它更容易打字(大多数键盘都不需要换档). 更漂亮的团队也推荐单引号

此外,甚至dotnet new模板也使用单引号用于Angular应用程序.

  • 奇怪的是,他似乎[关于Prettier错误](https://github.com/prettier/prettier/issues/1105)。该链接([他引用的链接](https://basarat.gitbooks.io/typescript/docs/styleguide/styleguide.html#quotes)!)表示他们更喜欢双重,而不是单一。还有这样的评论:“仅供参考,我喜欢双引号,因为JSON需要双引号,而且我经常不得不在JSON文档和javascript代码之间移动对象文字的摘要。*”颇具说服力。哦,嗯,​​我想YMMV和大多数主观风格决定一样。 (4认同)

Rah*_*thi 12

字符串使用单引号和字符串使用双引号没有特别标准,但建议对字符串使用双引号,反之亦然.

来自文档:

就像JavaScript一样,TypeScript也使用双引号(")或单引号(')来包围字符串数据.

  • Google JavaScript样式指南建议更喜欢单引号:"为了一致性,单引号(')比双引号(")更受欢迎.这在创建包含HTML的字符串时非常有用:".http://google-styleguide.googlecode.com/svn/trunk/javascriptguide.xml?showone=Strings#Strings (32认同)
  • @Rahul,文档说双引号或单引号,那么它是哪一个? (6认同)

mka*_*kaj 12

由@crowebird链接的编码标准文档是一个很好的文档:https://github.com/Microsoft/TypeScript/wiki/Coding-guidelines

我喜欢除双引号之外的所有指南 - 当使用带有Angular 2的打字稿时.

这个问题不是关于Angular 2的Typescript,但读者可能是Angular 2用户.在打字稿中标记html字符串时,使用单引号可以更容易阅读.

请看以下示例:

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

但如果你使用双引号,你必须逃避双引号:

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

第一种选择是可取的.大多数Angular 2演示都使用单引号.

  • 使用backtick`作为html字符串应解决转义问题. (5认同)
  • 在html中使用单引号时,可以应用相同的规则.它更实用,特别是对于html代码使用````template strings```` (3认同)
  • 你应该阅读该页面顶部的粗体注释:“这些是 TypeScript 贡献者的编码指南,这不是 TypeScript 社区的规定指南” (2认同)

Set*_*eth 7

既然似乎没有硬性的答案,那么跨语言的一致性是什么?

Bash/Powershell/Ruby : " 启用插值和转义序列。' 表示字符串与输入的完全一样。

C 风格的语言(Java、C#、C++ 等):" 是一个字符串,而 ' 表示单个字符。

Python/Javascript:没有区别。如果字符串需要包含 ",您可以用 ' 分隔它,反之亦然。

JSON:仅双引号。这是倾斜的论点。

在各种语言中,单引号意味着缺少转义序列和插值。

Typescript 对 `(反引号)字符串具有向后兼容性,因此我更喜欢对非转义字符串使用 "(双引号),通常没有空格并使用以下字符集:

ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-[\w\d-]*在许多正则表达式方言中。这意味着您可以将面食对象文字复制到 JSON 中,反之亦然。在实践中对于小调查、测试等非常有用。

对于其他所有内容,`(反引号)因为它减少了转义序列并启用了插值

注意:我不是 JSON 的拥护者,这几天似乎不可避免;)