2017-12-03 8 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コードであり、そして私がこれまで試みられてきた:

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

} 

私は任意の型にプロパティをキャストするにはどうすればよい:

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構造です?

+0

「Matatu」タイプの定義を追加してください。 – sebaferreras

+0

これはインターフェースです。そこにそれがある。 – kenyami

答えて

2

どのようにプロパティを任意の型にキャストしますか?

あなただけのtypescriptですエラーを回避するために、それをキャストしたい場合は、このような何か行うことができます:matatuはにキャストするような方法

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

そして

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

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インターフェイスを変更することができれば、お勧めしたいの代わりに存在し、これらの2つのプロパティを追加することです何


​​とkeyの両方がMatatuタイプの定義の一部です(両方ともタイプがany)。

関連する問題