2016-08-16 922 views
3

我打开与ES7属性初始化一个js文件的源和我越来越波浪线:理解vscode波浪线

class AppContainer extends Component { 
    static propTypes = { 
    history: PropTypes.object.isRequired, 
    routes: PropTypes.object.isRequired, 
    store: PropTypes.object.isRequired 
} 

错误说:

[js] 'property declarations' can only be used in a .ts file. 

我很好奇,如何解决这一问题, 当然。但我更好奇如何调试给出这个错误的是什么?这是一些编辑更令人沮丧的部分之一,理解什么决定你的代码是错误的。

是VS还是插件?棉短绒?编译器?

我确实看到了this question,但这似乎只适用于es6。 另外this question是关于eslint插件,而不是核心与代码。

至于修复它,我确实找到了一些建议jsconfig.json,并试图设置compilerOptions目标es7(不去那里)。它看起来像你添加特定的eslint设置,但是,谁又赢了?短绒?内部编译器?

enter image description here

所以,这两个问题:

  1. 你怎么知道哪些扩展触发一个错误(vscode,棉短绒,JSX,等...)?
  2. 我该如何解决这个问题?

感谢

+0

可能的[VSCode Linter ES6 ES7 Babel linter]重复(http://stackoverflow.com/questions/36327096/vscode-linter-es6-es7-babel-linter) – Claies

+0

也许,但只有部分2.我是更好奇如何发现错误来自哪里(什么模块/扩展名)。例如,如果核心引擎说错了,但是linter说不,胜谁? –

回答

2

这是一个很好的问题。

这是一些编辑更令人沮丧的部分之一,理解什么是决定你的代码是错误的。

我希望我能帮上忙。 (免责声明我在VS代码团队合作)

  1. 你怎么知道哪些扩展触发一个错误(vscode,棉短绒,JSX,等...)?

掉毛标识为[]你的情况js正在确定已内置到VS代码JavaScript语言服务。

语言服务(在构建时的代码为Salsa)提供了JavaScript和TypeScript语言服务功能,包括linting。这就是错误地声明“'属性声明'只能在.ts文件中使用”的原因。“

对于eslint错误,您会在错误消息的前缀中看到[eslint]

  1. 我该如何解决这个问题?

首先您需要使用最新的稳定TypeScript版本,该版本将随VS Code 1.6一起发行。要升级到TypeScript 2.0,请参阅此doc(总结如下)。

npm install [email protected] 

添加到您的设置文件(假设是tsserver.js正确的路径)

{ 
    "typescript.tsdk": "node_modules/typescript/lib" 
} 

每本Github Issue comment,将它添加到您的jsconfig.json文件。

{ 
    "compilerOptions": { 
     "experimentalDecorators": true 
    } 
} 

这应该可以解决您的问题。