Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript VS代码强制使用分号,但角度型脚本示例不一致地使用?_Javascript_Angular_Typescript_Visual Studio Code_Tslint - Fatal编程技术网

Javascript VS代码强制使用分号,但角度型脚本示例不一致地使用?

Javascript VS代码强制使用分号,但角度型脚本示例不一致地使用?,javascript,angular,typescript,visual-studio-code,tslint,Javascript,Angular,Typescript,Visual Studio Code,Tslint,我现在正在学习Microsoft Angular Fundamentals课程,我发现他们的示例中缺少分号,例如: gitSearch = (query: string): Promise<GitSearch> => { let promise = new Promise<GitSearch>((resolve, reject) => { if (this.cachedValues[query]) { resol

我现在正在学习Microsoft Angular Fundamentals课程,我发现他们的示例中缺少分号,例如:

gitSearch = (query: string): Promise<GitSearch> => {
    let promise = new Promise<GitSearch>((resolve, reject) => {
        if (this.cachedValues[query]) {
            resolve(this.cachedValues[query])
        }
        else {
            this.http.get('https://api.github.com/search/repositories?q=' + query)
            .toPromise()
            .then( (response) => {
                resolve(response as GitSearch)
            }, (error) => {
                reject(error);
            })
        }
    })
    return promise;
  }
gitSearch=(查询:字符串):Promise=>{
让承诺=新承诺((解决、拒绝)=>{
if(this.cachedValues[query]){
解析(this.cachedValues[query])
}
否则{
this.http.get('https://api.github.com/search/repositories?q=“+查询)
.toPromise()
。然后((响应)=>{
解析(响应为GitSearch)
},(错误)=>{
拒绝(错误);
})
}
})
回报承诺;
}

请注意,
resolve.thisCachedValues[query])
之后不使用分号。但是VS代码在那一行给了我TSLint警告“缺少分号”。如果我省略分号,这是一个问题吗?

您只需使用

tslint:disable*/-禁用文件其余部分的所有规则

还可以禁用tslint的特定规则。

/*tslint:enable:rule1 rule2 rule3…*/-为启用列出的规则 文件的其余部分


是的,这确实有区别。Typescript是Javascript的扩展,它继承了它的一些属性。请看下面的示例:

考虑一下 在return语句中插入分号的结果。如果返回语句 返回一个值,该值表达式必须与返回值在同一行开始:

return
{
 status: true
};
这似乎返回了一个包含状态成员的对象不幸的是,分号插入将其转换为返回未定义的语句。没有任何警告 插入分号导致了对程序的误解。问题 如果{位于前一行的末尾而不是下一行的开头,则可以避免:

return {
 status: true
};
因此,请确保分号出现在正确的位置(主要是当一行以javascript结尾时)。我希望这能让您了解如果您不正确地使用分号可能存在的陷阱


我从JavaScript:The Good parts中选取了这个例子,这是一本172页的薄书,但是关于这类东西非常棒分号不是JavaScript或Typescript所要求的,但是它被一些开发人员认为是一种很好的做法,因为它使代码更具可读性。您可以通过编辑ru来禁用分号规则乐:

"semicolon": [true, "never"]
"semicolon": [true, "never"]
有关规则的详细信息,请参见

如果我省略分号,这是一个问题吗


省略分号不是问题。

JavaScript有一种称为分号插入的语法功能。由于Typescript是JavaScript的严格超集,分号插入也适用于Typescript。这意味着在大多数情况下,分号是不需要的。例外情况如下所述

从…起 [T] 他[ECMAScript]规范散文随后给出了描述实际解析与形式语法之间差异的规则。这些规则被描述为在解析时将分号插入到标记流中,尽管这只是一种规范方便;在实践中,解析器不需要生成假分号标记,而是可以将其视为分号s在语法中的特定位置是可选的(例如,请参见语句、EOS、EOSnoLB和SnoLB规则)。如果规范中说明插入了分号,则表示当前正在分析的语句已结束

分号在哪里是可选的,在哪里是必需的?
  • 首先,分号仅在有换行符、右大括号或程序结尾的情况下是可选的
  • 分号在出现在同一行的语句之间不是可选的
  • 如果可以将下一行的第一个标记作为同一语句的一部分进行分析,则分号不会隐含在行的末尾
TSLint(由VS代码使用)支持。在TSLint.json中,分号规则可以配置为:

  • 始终
    ”在每条语句的末尾强制使用分号
  • never
    ”不允许在每条语句的末尾加分号,除非必要
TSLint分号规则示例 TSLint将在2019年被弃用,并迁移到ESLint,这将是TypeScript和JavaScript的标准linter

该工具有助于将TSLint配置转换为等效的ESLint

用法
“分号”:[正确,“从不”]在tslin.json中,它会抱怨现有的分号。是否有一个选项告诉它不在乎分号是否存在,我计划从此不再使用分号。我也不会编写需要分号的愚蠢代码;-)ESlint如何?谢谢。@Meryan也许这个解决方案对你有用:
"semicolon": [true, "always"]
"semicolon": [true, "always", "ignore-interfaces"]
npx tslint-to-eslint-config