2016-09-07 50 views
5

您好我在使用WebStorm 2016.2.2时遇到支持tsconfig中的“lib”属性的问题。在Object.assign和Promise上出现错误突出显示<any>

我试图编辑在IDE的喜好打字稿版本(Preferences -> Languages & Frameworks -> TypeScript),并指向一个全球安装的打字稿2.0版本,但我仍然得到的东西错误突出状Object.assignPromise<any>

我重新启动了IDE多次,似乎没有任何改变,关于如何修复或调试的任何想法?

//tsconfig.json 
{ 
    "compilerOptions": { 
    "target": "es5", 
    "module": "commonjs", 
    "emitDecoratorMetadata": true, 
    "experimentalDecorators": true, 
    "sourceMap": true, 
    "noEmitHelpers": true, 
    "strictNullChecks": false, 
    "baseUrl": "./src", 
    "paths": { 
     "core": ["app/core"], 
     "reactive": ["app/reactive"], 
     "models": ["app/models"], 
     "services": ["app/services"] 
    }, 
    "lib": [ 
     "dom", 
     "es6" 
    ], 
    "types": [ 
     "hammerjs", 
     "jasmine", 
     "node", 
     "protractor", 
     "selenium-webdriver", 
     "source-map", 
     "uglify-js", 
     "webpack" 
    ] 
    }, 
    "exclude": [ 
    "node_modules", 
    "dist" 
    ], 
    "awesomeTypescriptLoaderOptions": { 
    "forkChecker": true, 
    "useWebpackText": true 
    }, 
    "compileOnSave": false, 
    "buildOnSave": false, 
    "atom": { "rewriteTsconfig": false } 
} 
+0

你指定'“target”:“es5”',这样编译器就可以用常规的[lib.d.ts]进行编译(https://github.com/Microsoft/TypeScript/blob/master/lib/lib .d.ts)而不是[lib.es6.d.ts](https://github.com/Microsoft/TypeScript/blob/master/lib/lib.d.ts),因此缺少这些定义。把它改为'“target”:“es6”'应该没问题。 –

+0

请注意,如果您的目标浏览器不支持ES6,TS本身不提供任何polyfill。 – Stijn

+0

@NitzanTomer你可以发布这个答案,所以我可以标记你是正确的吗?谢谢:) Stijn - 嗯,我正在使用core-js。 – exk0730

回答

5

您指定:

"target": "es5" 

所以编译器将与常规lib.d.ts,而不是lib.es6.d.tsES6功能,如Object.assignPromise编译和人失踪。

将其更改为

"target": "es6" 

,它应该是罚款。