在Angular 2 app中使用interface和OpaqueToken时的Typescript警告

时间:2016-10-04 16:36:49

标签: angular typescript

我一直关注文档here并使用 ng-cli

我创建了以下配置文件( app-config.ts ):

import { OpaqueToken } from '@angular/core';

export interface AppConfig {
  supportTelephoneNumber: string;
}

export let APP_CONFIG_t = new OpaqueToken('app.config');

export const APP_CONFIG: AppConfig = {
  supportTelephoneNumber: '1111 111 1111'
};

在我的 app.module.ts 文件中我有:

...
@NgModule({
  declarations: [
    UkCurrencyPipe,
    AppComponent,
    HomeComponent
  ],
  imports: [
    BrowserModule,
    FormsModule,
    HttpModule,
    RouterModule.forRoot(ROUTES, { useHash: true }),
    MaterialModule.forRoot()
  ],
  providers: [
    { provide: APP_CONFIG_t, useValue: APP_CONFIG },
    ...

我在 app.component.ts 文件中使用此配置,如下所示:

import { Component, Inject } from '@angular/core';
import { APP_CONFIG_t, AppConfig } from './app-config';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.less']
})
export class AppComponent {
  constructor(@Inject(APP_CONFIG_t) public config: AppConfig) {

  callSupport(): void {
    window.location.href = 'tel:+' + this.config.supportTelephoneNumber;
  }
}

当我使用 ng服务投放我的应用时,一切似乎都运行正常,但我确实在控制台中看到了这些警告,我在哪里运行 ng服务器

  警告在./src/app/app.component.ts中   40:166 export' AppConfig'在' ./ app-config'

中找不到      警告在./src/app/app.component.ts中   40:195 export' AppConfig'在' ./ app-config'

中找不到

有谁知道这些警告的含义以及我是否应该担心它们?

我的版本

  • 操作系统:Mac OS X El Capitan v10.11.6
  • ng-cli:v1.0.0-beta.16
  • angular:v2.0.1
  • typescript:v2.0.2

1 个答案:

答案 0 :(得分:17)

根据问题comment上的https://github.com/angular/angular-cli/issues/2034

  

有同样的问题。 (尽管有警告但工作正常)   你从文件中导出多个接口/类/ const?   我从自己的专用文件中导出每个接口后,问题就停止了。

     

意思是如果我有一个包含多个导出的文件 - 我在构建中收到警告(导出' MyInterface1'未在' ../ file'中找到)

     

file.ts

export interface MyInterface1 {}
export interface MyInterface2 {}
  

重构后 - 没有警告

     

file1.ts

export interface MyInterface1 {}
  

file2.ts

export interface MyInterface2 {}