打字稿/角度2:属性缺少类型

前端之家收集整理的这篇文章主要介绍了打字稿/角度2:属性缺少类型前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我对Typescript仍然很陌生,并且难以绕过接口.据我所知,接口是类的描述或类的合同.它允许我定义一个类可以具有哪些属性以及它们是哪种类型.我尝试实现它,但总是得到这个错误
  1. error TS2420: Class 'ResultPage' incorrectly implements interface 'ResultPageInterface'.
  2. Property 'entries' is missing in type 'ResultPage'.

这是界面的代码

  1. export interface ResultPageInterface {
  2. entries:Array<any>;
  3. page_number:number;
  4. page_size:number;
  5. total_entries:number;
  6. }
  7.  
  8. export class ResultPage implements ResultPageInterface {}

在这里我想要使用它的类.

  1. import { Injectable } from '@angular/core';
  2. import { ResultPage } from '../interfaces/result-page.interface';
  3.  
  4. @Injectable()
  5. export class SomeClass {
  6.  
  7. constructor() {}
  8.  
  9. buildPage(res:any): ResultPage {
  10. let page:ResultPage = new ResultPage();
  11. page.entries = res.data;
  12. page.page_number = res.pagination.page_number;
  13. page.page_size = res.pagination.page_size;
  14. page.total_entries = res.pagination.total_entries;
  15. return page;
  16. }
  17.  
  18. }
您还需要将成员放在类中,以便它确实实现接口:
  1. class ResultPage implements ResultPageInterface {
  2. public entries: Array<any>;
  3. public page_number: number;
  4. public page_size: number;
  5. public total_entries: number;
  6.  
  7. constructor() {
  8. this.entries = [];
  9. }
  10. }

您还可以将成员设为私有并使用getter:

  1. class ResultPage implements ResultPageInterface {
  2. private _entries: Array<any>;
  3. private _page_number: number;
  4. private _page_size: number;
  5. private _total_entries: number;
  6.  
  7. constructor() {
  8. this._entries = [];
  9. }
  10.  
  11. public get entries() {
  12. return this._entries;
  13. }
  14.  
  15. public get page_number() {
  16. return this._page_number;
  17. }
  18.  
  19. public get page_size() {
  20. return this._page_size;
  21. }
  22.  
  23. public get total_entries() {
  24. return this._total_entries;
  25. }
  26. }

猜你在找的Angularjs相关文章