打字稿错误 TS2420:类错误地实现了接口

6 typescript

在构建我的应用程序时,我收到以下错误,这对我来说似乎很奇怪,因为属性 appName 已声明:

../src/app/app.service.ts (30,14) 中的错误:类“AppService”错误地实现了接口“InternalStateType”。“AppService”类型中缺少属性“appName”。)

应用程序服务.ts

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

interface InternalStateType {
  [key: string]: any;
  appName: string;
  darkMode: boolean;
  defaultLang: string;
  topnavTitle: string;
  messagePanelOpen: boolean;
  sidenavOpen: boolean;
  sidenavMode: string;
  sidenavCollapse: boolean;
  pageFullscreen: boolean;
  pageFooter: boolean;
  initial: boolean
};


/**
 * App service
 */
@Injectable()
export class AppService implements InternalStateType {

  // Set your states default value.
  private state: InternalStateType = {
    appName: 'MyApp',
    darkMode: false,
    defaultLang: 'en',
    topnavTitle: 'MyApp',
    messagePanelOpen: false,
    sidenavOpen: false,
    sidenavMode: 'over',
    sidenavCollapse: true,
    pageFullscreen: false,
    pageFooter: false,
    initial: false
  };

  public cloneState(): InternalStateType {
    return JSON.parse(JSON.stringify(this.state));
  }

  public reloadState(state: InternalStateType) {
    this.state = state;
  }

  public getState(prop?: any): InternalStateType {
    const state = this.state;
    return state.hasOwnProperty(prop) ? state[prop] : state;
  }

  public setState(prop: string, value: any) {
    return this.state[prop] = value;
  }
}
Run Code Online (Sandbox Code Playgroud)

我哪里错了?感谢您的反馈意见

Sar*_*ana 0

您实际上并没有类型appName上的属性AppService。您的state类型为InternalStateType并拥有appName财产。如果您确实想AppService实现InternalStateType,请按如下方式定义:

@Injectable()
export class AppService implements InternalStateType {

  private appName: string;
  // ... define other members of `InternalStateType` here

}
Run Code Online (Sandbox Code Playgroud)

如果您不打算AppService实现InternalStateType,请将其从类声明中删除:

export class AppService {
  // ...
}
Run Code Online (Sandbox Code Playgroud)