【问题标题】:What is the standard for use of quotes in Typescript?Typescript 中引号的使用标准是什么?
【发布时间】:2014-10-16 17:05:14
【问题描述】:

我在我的应用程序中注意到 TsLint 建议:

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

对于上述情况:

Message 2   TsLint: ' should be "

现在这是 Typescript 的建议标准吗?

【问题讨论】:

  • 顺便说一句,您可以添加项目本地 tslint 文件并更改为双引号标准 "quotemark": [true, "double"]

标签: typescript tslint


【解决方案1】:

找到您的 tslint.json 文件并更改以下 json 设置

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

这允许在您的 ts 文件中使用单引号和双引号。

使用 Visual Studio 时,可能需要重新启动 Visual Studio。

【讨论】:

  • 我更喜欢直接设置 false "quotemark": [false]
【解决方案2】:

我会用单引号。我非常同意this guy

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

原因:更多 JavaScript 团队这样做(例如airbnb、标准、npmnodegoogle/angularfacebook/react)。它更容易打字(大多数键盘不需要移位)。

Prettier 团队推荐 -单引号也可以 double quotes

此外,即使 dotnet new 模板也对 Angular 应用程序使用单引号。

【讨论】:

  • 奇怪的是,他好像是wrong about Prettier。该链接 (the one he references!) 说他们更喜欢双,而不是单。那里的评论“仅供参考,我更喜欢双引号,因为 JSON 需要它们,而且我经常不得不在 JSON 文档和 javascript 代码之间移动对象文字的 sn-ps。”相当有说服力。哦,好吧,YMMV,我想就像大多数主观的风格决定一样。
  • 在某些键盘上,单引号字符更难按,即在德语键盘上,您需要按 shift 键和返回键的左键,因此您要么需要使用双手(左shift 键和右单引号键用小指按下)或需要按下两个直接在彼此顶部的键(右 shift 键和正上方的单引号键)。后者听起来更容易,但做那个手部动作很麻烦。如果您需要添加大量单引号,这会很烦人,因为在此期间您无法使用鼠标,除非您使用左手。
  • 我真的推荐双引号,因为 JSON。
【解决方案3】:

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

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

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

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

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

在所有语言中,单引号表示缺少转义序列和插值。

Typescript 对 `(反引号)字符串具有向后兼容性,所以我的偏好是对非转义字符串使用 "(双引号),通常没有空格并在后面的字符中设置:

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

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

注意:我不是 JSON 的拥护者,现在看来它是不可避免的 ;)

【讨论】:

    【解决方案4】:

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

    来自docs

    就像 JavaScript 一样,TypeScript 也使用双引号 (") 或 单引号 (') 将字符串数据括起来。

    【讨论】:

    • Google JavaScript 样式指南建议首选单引号:“为了保持一致性,单引号 (') 优于双引号 (")。这在创建包含 HTML:" 的字符串时很有帮助。google-styleguide.googlecode.com/svn/trunk/…
    • @Rahul,文档说双引号或单引号,那是哪一个?
    • 对于我当前的项目,我没有输入单引号或双引号,而是让 prettiervscode 自动将它们修复为双引号,以获得更好的 JSON 兼容性。
    【解决方案5】:

    如果您要嵌入模板字符串,则反引号:

    `
    

    直接来自here

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

    我个人更喜欢单引号,因为 ''"" 在处理空字符串常量时对眼球的混淆程度略低。

    但如果您需要嵌入单引号,则可以覆盖该规则。使用双引号来包装事物以避免逃避头痛。

    灵活性是关键。

    【讨论】:

      【解决方案6】:

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

      我喜欢除了双引号之外的所有指南——在 Angular 2 中使用 typescript 时。

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

      举个例子:

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

      但如果你使用双引号,你必须转义双引号:

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

      第一个选项更可取。大多数 Angular 2 演示使用单引号。

      【讨论】:

      • 在 html 中使用单引号时,可以对单引号应用相同的规则。它更实用,尤其是对于 html 代码使用 ``` template strings ```
      • 对html字符串使用反引号`应该可以解决转义问题。
      • 您应该阅读该页面顶部的粗体 cmets:“这些是 TypeScript 贡献者的编码指南,这不是 TypeScript 社区的规定性指南”
      【解决方案7】:

      这是我在谷歌搜索的第一个结果:“双引号与单引号打字稿”。

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

      对字符串使用双引号。

      当然,“代码更像是你所说的‘指导方针’,而不是实际规则。” :)

      【讨论】:

      • 来自 typescript 开发者自己--TypeScript Github issue #5811: “但是为了具体回答您的问题,我们偶尔会使用 TypeScript 以外的语言。所有这些语言都需要字符串的双引号(例如 C# , C++, F#) 或至少允许对字符串使用双引号(例如 Python、Ruby)。在语言之间来回切换时不要要求人们移动他们的肌肉记忆会更容易。"
      • 值得一提的是,链接指南不得被视为社区代码指南。它们仅供内部 Typescript 代码库贡献者使用。
      • 单引号更容易输入(没有 shift 键),但双引号适用于几乎所有语言的字符串 - 并且对于许多(大多数?)语言来说,它们是必需的 - 似乎一个很好的理由在任何地方都默认使用双引号
      • 在 ruby​​ 中,当您计划进行插值时,只使用双引号是有意义的。当我看到单引号时,我认为字符串内不会发生任何事情。
      • 来自该页面:“这些是 TypeScript 贡献者的编码指南,这不是 TypeScript 社区的规范性指南”
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-08
      • 2020-08-03
      • 1970-01-01
      • 1970-01-01
      • 2014-06-30
      相关资源
      最近更新 更多