IntelliJ IDEA报告未解决的变量TypeScript错误,但不允许':任何'

时间:2015-12-31 22:16:52

标签: intellij-idea typescript webstorm

我在Angular 2应用程序中有以下一些TypeScript代码。

   constructor(private windows:WindowService, private http:Http) {
        http.get('config.json')
            .map(res => res.json())
            .subscribe(config => {
                this.oAuthCallbackUrl = config.callbackUrl; // here
                this.oAuthTokenUrl = config.implicitGrantUrl; // here
                this.oAuthTokenUrl = this.oAuthTokenUrl
                    .replace('__callbackUrl__', config.callbackUrl) // here
                    .replace('__clientId__', config.clientId) // here
                    .replace('__scopes__', config.scopes); // here
                this.oAuthUserUrl = config.userInfoUrl; // here
                this.oAuthUserNameField = config.userInfoNameField; // here
            })
    }

我有// here的每个地方我从IDE收到错误,说我有一个未解决的变量',例如unresolved variable callbackUrl

问题是这个配置对象是应用程序提取的JSON文件的结果,我不知道如何提前定义它的类型。

我以为我可以更改订阅行以显示.subscribe(config:any => {或其他内容,但这样做无效。

代码编译得很好。一切都在浏览器中(并通过Webpack)正常运行。我只想摆脱IDE中的错误,而不必添加7条//noinspection TypeScriptUnresolvedVariable条评论来压制它们。

1 个答案:

答案 0 :(得分:4)

正如上面评论中提到的@DCoder,解决方案是将config参数包装在括号中,然后将类型添加到其中。

constructor(private windows:WindowService, private http:Http) {
    http.get('config.json')
        .map(res => res.json())
        .subscribe((config:any) => {  //               <-- WORKS NOW!
            this.oAuthCallbackUrl = config.callbackUrl;
            this.oAuthTokenUrl = config.implicitGrantUrl; 
            this.oAuthTokenUrl = this.oAuthTokenUrl
                .replace('__callbackUrl__', config.callbackUrl) 
                .replace('__clientId__', config.clientId) 
                .replace('__scopes__', config.scopes); 
            this.oAuthUserUrl = config.userInfoUrl;
            this.oAuthUserNameField = config.userInfoNameField; 
        })
}

缺少括号使我无法在config上添加任何类型的输入信息。