如何避免ionic2应用程序中的打字稿错误?

时间:2016-08-22 10:27:49

标签: angular typescript ionic2

您好我正在使用Ionic2。我在使用JSON.parse(this.items1)时出现了一些错误实际上这不是Javascript中的错误,但它在ts文件中显示错误...如何避免这些错误?

错误

 TypeScript error: E:/Projects 2016/TaskBean/mytaskbeanapp/app/pages/list/list.ts
(38,21): Error TS2345: Argument of type 'any[]' is not assignable to parameter o
f type 'string'.
10.3 MB bytes written (2.13 seconds)

代码

import {Component,Type} from '@angular/core';
import {ModalController, NavController, NavParams,MenuController} from 'ionic-angular';
import {ItemDetailsPage} from '../item-details/item-details'; 
import {AddItemPage} from '../addtask/add';
import {ItemDetailPage} from '../item-detail/item-detail';
import {Data} from '../providers/data';
import {Http, Response, Headers, Request, RequestOptions, RequestMethod, URLSearchParams} from 
'@angular/http';
import 'rxjs/Rx';

@Component({
  templateUrl: 'build/pages/list/list.html',
})
export class ListPage  extends Type {

 selectedItem: any;
  private items = [];
  private items1 = [];
   result: Object;
    public mydata = [];

   projectid:string;
  constructor(private nav: NavController, navParams: NavParams,public menu:MenuController,private dataService: Data, private modalCtrl: ModalController,public http:Http) {
   this.result = {friends:[]};



      http.get('http://192.168.0.26:9000/api/task/counttask?projectid=-1&Teamid=-1&RoleId=-1&status=1&PID=-1&mytasks=0&alltasks=0&page=1&row=15&priorityid=-1&typeid=-1&taskname=&JSON&_=1471520478215')

    .map((res: Response) => res.json())

.subscribe(

                  res => { this.items1 = res;
            **alert(JSON.parse(this.items1))**
try
{

    alert(JSON.parse(JSON.parse(this.items1).Data));


    window.localStorage['mydata']=this.items;


    }
    catch(e)
    {

    }





         },

        () => console.log('getUserStatus Complete') // complete
    );



 this.selectedItem = navParams.get('item');
 this.menu.enable(true, 'mymenu');
 this.dataService.getData().then((todos) => {



        if(todos){
            this.items = JSON.parse(todos); 
        }

    });

  }
  itemTapped(event, item) {

    this.nav.push(ItemDetailsPage, {
      item: item
    });
  }
  addItem(){

    let addModal = this.modalCtrl.create(AddItemPage);

    addModal.onDidDismiss((item) => {

      if(item){
        this.saveItem(item);
      }

    });

    addModal.present();

  }

  saveItem(item){
    this.items.push(item);
    this.dataService.save(this.items);
  }

  viewItem(item){
    this.nav.push(ItemDetailPage, {
      item: item
    });
  }

  removeItem(item){

    for(var i = 0; i < this.items.length; i++) {

      if(this.items[i] == item){
        this.items.splice(i, 1);
                              }

    }

  }
}

1 个答案:

答案 0 :(得分:1)

  

类型的论点&#39;任何[]&#39;不能分配给类型的参数   &#39;串&#39;

您在类型脚本中收到错误的原因是因为items1的类型为 any [] 而且您是为其分配字符串this.items1 = res)。

这不是执行时间的错误,因为您可以在JS中为变量分配您想要的内容,并且就您调用的方法或您执行的操作而言,它不会抱怨它与它不会抛出异常。

为避免出现类似问题,请尝试明确声明您在代码中使用的属性类型

private items: Array<any> = []; // Instead of any you can declare even how the objects inside the array are

在为其分配值时,请牢记类型

this.items1 = JSON.parse(res); // Instead of this.items1 = res;
相关问题