我在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
条评论来压制它们。
答案 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
上添加任何类型的输入信息。