2017-12-03 281 views
1

我已經通過this post(和this one以及)找到我的問題的解決方案。Ionic3,Typescript - 忽略Typescript錯誤「屬性」在類型''的值不存在

我想忽略這些錯誤:

Property 'payload' does not exist on type 'Matatu'.

Property 'key' does not exist on type 'Matatu'.

我試圖聲明變量「覆蓋」的類型系統,但並未奏效。

這裏是我的.ts代碼,是我到目前爲止已經嘗試:

import { Component } from '@angular/core'; 
import { IonicPage, NavController, NavParams, ActionSheetController } from 'ionic-angular'; 
import { AngularFireList, AngularFireDatabase } from 'angularfire2/database'; 
import { Matatu } from '../../models/matatu/matatu.interface'; 
/* imports */ 

declare var payload; 
declare var key; 

@IonicPage() 
@Component({ 
    selector: 'page-owner-dash', 
    templateUrl: 'owner-dash.html', 
}) 
export class OwnerDashPage { 

    matatuListRef$: AngularFireList<Matatu>; 
    matatuListAsync$: any; 

    constructor(public navCtrl: NavController, public navParams: NavParams, private database: AngularFireDatabase, public actionShtCrtl: ActionSheetController) { 

    this.matatuListRef$ = this.database.list('matatu-list'); 
    this.matatuListAsync$ = this.matatuListRef$.snapshotChanges(); 

    } 

    ionViewDidLoad() { 
    //stuff 
    } 

    selectMatatu(matatu: Matatu){ 
    this.actionShtCrtl.create({ 
     title: `${matatu.payload.val().matNumberPlate}`, 
     buttons: [ 
     { 
      text: 'Edit', 
      handler:() => { 
      //stuff 
      }   
     }, 
     { 
      text: 'Delete', 
      role: 'destructive', 
      handler:() => { 
      this.matatuListRef$.remove(matatu.key); 
      } 
     }, 
     { 
      text: 'Cancel', 
      role: 'cancel', 
      handler:() => { 
      //do something 
      } 
     } 
     ] 
    }).present(); 
    } 


} 

這裏的Matatu結構:

export interface Matatu { 
    $key?: string; 
    matNumberPlate: string; 
    matSacco: string; 
    matDriver: string; 
    matAccessCode: string; 
    matStatus: string; 
    matTracker: string; 
    matLocation: string; 

} 

我怎麼投的財產,以任何類型?

+0

請問您還可以添加「Matatu」類型的定義嗎? – sebaferreras

+0

這是一個界面。它是。 – kenyami

回答

2

如何將屬性轉換爲任何類型?

如果你只是想投,爲了避免打字稿錯誤,你可以做這樣的事情:

// ... 
title: `${(<any>matatu).payload.val().matNumberPlate}`, 
// ... 

而且

// ... 
this.matatuListRef$.remove((<any>matatu).key); 
// ... 

這樣matatu將被轉換爲any並且錯誤應該消失。


我建議你,如果你可以修改Matatu接口,將有添加這兩個屬性,而不是:

export interface Matatu { 
    $key?: string; 
    matNumberPlate: string; 
    matSacco: string; 
    matDriver: string; 
    matAccessCode: string; 
    matStatus: string; 
    matTracker: string; 
    matLocation: string; 

    // New properties are optional 
    payload?: any; 
    key?: any; 
} 

這樣,你不需要施放matatu財產因爲​​和key都是Matatu類型定義的一部分(並且都是any類型)。

相關問題