ChatGPT解决这个技术问题 Extra ChatGPT

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

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

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

对于上述情况:

Message 2   TsLint: ' should be "

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

顺便说一句,您可以添加项目本地 tslint 文件并更改为双引号标准 "quotemark": [true, "double"]
由于 Apostrophe ' 通常可以包含在常见的文本输出中(通常远远超过 "),因此最好使用双引号 ""。它也与其他将 ' 用于单个字符的类 C 语言更加一致。 话虽如此,但这并不重要 - 经验法则 - 使用项目中已有的内容并对此保持一致。其中一种意识形态也是使用 { 4} 用于文本输出,' 用于“编程”字符串,如常量值

c
crowebird

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

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

对字符串使用双引号。

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


来自 typescript 开发人员自己--TypeScript Github issue #5811: “但为了具体回答您的问题,我们偶尔会使用 TypeScript 以外的语言。所有这些语言要么需要字符串双引号(例如 C#、C++、F#),要么至少需要双引号允许对字符串使用双引号(例如 Python、Ruby)。在语言之间来回切换时,不要要求人们改变肌肉记忆会更容易。"
值得一提的是,链接指南不得被视为社区代码指南。它们专供内部 Typescript 代码库贡献者使用。
单引号更容易输入(没有 shift 键),但双引号适用于几乎所有语言的字符串 - 对于许多(大多数?)语言来说,它们是必需的 - 似乎是默认为 double 的一个很好的理由到处都是报价
在 ruby 中,当您计划进行插值时,仅使用双引号是有意义的。每当我看到单引号时,我认为字符串内不会发生任何事情。
来自该页面:“这些是 TypeScript 贡献者的编码指南,这不是 TypeScript 社区的规范性指南”
C
Community

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

除非转义,否则首选单引号 (')。原因:更多的 JavaScript 团队这样做(例如,airbnb、standard、npm、node、google/angular、facebook/react)。它更容易打字(大多数键盘不需要移位)。 Prettier 团队推荐 - 单引号和双引号

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


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

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

docs

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


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

@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>'
})

但是,如果您使用双引号,则必须转义双引号:

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

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


当您在 html 中使用单引号时,可以将相同的规则应用于单引号。它更实用,尤其是对于使用 ``` template strings ``` 的 html 代码
对 html 字符串使用反引号 ` 应该可以解决转义问题。
您应该阅读该页面顶部的粗体注释:“这些是 TypeScript 贡献者的编码指南,这不是 TypeScript 社区的规范性指南”
人们真的内联他们的模板吗?
S
Seth

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

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

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

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

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

跨语言,单引号意味着缺少转义序列和插值。

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

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

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

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


J
JGFMK

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

`

直接来自here

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

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

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

灵活性是关键。


P
Pierrie Mostert

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

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

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

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


我更喜欢直接设置它 false "quotemark": [false]