Typescript 什么时候使用分号合适?
我知道JavaScript(以及TypeScript)在很多情况下支持省略分号。尽管如此,我还是想添加分号,使之明确,如中所建议的那样 但是,我找不到一个指南列出在哪里使用分号。例如,看下面的代码Typescript 什么时候使用分号合适?,typescript,coding-style,Typescript,Coding Style,我知道JavaScript(以及TypeScript)在很多情况下支持省略分号。尽管如此,我还是想添加分号,使之明确,如中所建议的那样 但是,我找不到一个指南列出在哪里使用分号。例如,看下面的代码 class Person { private name: string; // A constructor(name: string) { this.name = name; }; // B public add = () => { return "C";
class Person {
private name: string; // A
constructor(name: string) {
this.name = name;
}; // B
public add = () => {
return "C";
}; // C
}; // D
我很确定在a处使用分号。但是B、C、D和我的例子中没有涉及的所有其他情况呢
我不是问在哪里省略分号,而是问在哪里添加分号。像always这样的答案无法满足我的需求,因为我无法添加代码>在公开之后
。我想知道分号的确切位置。TL;医生:总是这样
记住:安全总比后悔好
你可能应该一直放着它们。您不需要按TypeScript的工作顺序放置它们,但这样做可以避免错误。ASI(自动分号插入)在大多数情况下都能很好地工作,但并不总是如此。你真的想仅仅因为没有放分号,而忽略了错误而遇到问题吗?(根据您的IDE,可能会发现错误)。但是考虑一下这个完全有效的JavaScript。< /P>
var x = { xx : "hello", yy : "world"}
(function () {
console.log("Hello World");
})();
这是有效的javascript(,因此也是有效的typescript)。这段代码实际上会给出一个错误<代码>未捕获类型错误:(中间值)(中间值)不是函数(…)
这可以通过在第一行后面加一个分号来避免。您不需要它,如果下一行不是功能行,它可能会正常工作。但你想冒这个险吗?我觉得为多出一个角色而冒险犯错误是不值得的。另外,过了一段时间,你就习惯了在一行的末尾加分号
想想你的同事
您可能希望一直使用它们的另一个原因是在代码更改的情况下。您的同事可能必须更改您的代码-这样做会认为ASI即使在代码更改的情况下也会继续工作。想象一下,情况并非如此,他的改变实际上让阿西做错了什么。这真的值得让你的同事头疼吗?如果他对您的代码做了足够多的更改,然后突然遇到许多错误,如果他不知道ASI的确切工作方式,他可能会感到相当困惑。你可以把潜在的同事放在任何地方,这样就可以省下很多(不必要的)工作 您需要注意不要无意中添加分号,但避免这种自作自受的错误的最好方法是,除非语言需要,否则不要使用分号 此错误很可能是唯一一个省略分号可能无法捕获您实际意图的情况: 对于(int i=0;i
[
,开头的前缀行(
,或`加上分号,你(几乎)是金色的*
使用与另一个答案相同的示例:
var x = { xx : "hello", yy : "world"}
(function () {
console.log("Hello World");
})();
我们根据此规则添加分号:
var x = { xx : "hello", yy : "world"}
;(function () {
否则javascript认为我们正在尝试调用(某个函数,或引用)[
一些数组。这更简单,更容易遵循,而且在视觉上更容易发现。对于循环,你也需要在中使用分号,但这个方法更干净、更简单。我可以自信地说,这一规则涵盖了在javascript/typescript中使用分号的99%的场景
按照此方法,将换行符与终止语句关联起来非常重要。
*这将返回未定义的可尊敬的:
return之后,有一个换行符,浏览器插入一个分号,终止语句,如下所示:
return; // this will return undefined.
7
改为这样做:
Javascript使用分号实际上非常灵活,有一个打开的paren,因此在找到结束paren之前不会插入分号
如果你有一个习惯,把分号放在各处,而不知道确切的时间需要分号,你可以阅读以下几页的解释:
我承认大多数人还是会在每一行的末尾加上分号,但是如果你是新来的,而且刚刚开始学习,这是更好的方法。像一些从C语法派生出来的方法一样,允许你在几乎所有情况下省略分号。我会说总是使用分号或从不使用分号*。使用“从不”它的长短不一之处在于,每一个语句都在一个新行上,从不以(
,[
,或`
但是,要使用“从不”,您肯定应该使用linter(如或eslint)和its来禁用分号和its,这将确保您避免以下几个问题:
a = b + c
(d + e).foo()
return
{
hello: "world"
};
以上解释为a=b+c(d+e).foo();
注意,通过遵循上述规则并且不以开头的行(
可以防止这种情况
另一个常见的例子如下:
a = b + c
(d + e).foo()
return
{
hello: "world"
};
乍一看,人们可能认为这将被解释为返回一个对象,但实际上它被解释为return;
,并且在return语句之后定义对象的代码是不可访问的。同样,通过遵循不以{
开头的规则,这是可以避免的
- *好,好