Angular 如何避免ionic2应用程序中的类型脚本错误?

Angular 如何避免ionic2应用程序中的类型脚本错误?,angular,typescript,ionic2,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 assignabl

您好,我使用的是
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);
                              }

    }

  }
}
代码

 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);
                              }

    }

  }
}
从'@angular/core'导入{Component,Type};
从“ionic angular”导入{ModalController、NavController、NavParams、MenuController};
从“../item details/item details”导入{ItemDetailsPage};
从“../addtask/add”导入{AddTempage};
从“../item detail/item detail”导入{ItemDetailPage};
从“../providers/Data”导入{Data};
从导入{Http,Response,Headers,Request,RequestOptions,RequestMethod,URLSearchParams}
“@angular/http”;
进口“rxjs/Rx”;
@组成部分({
templateUrl:'build/pages/list/list.html',
})
导出类ListPage扩展类型{
selectedItem:any;
私人项目=[];
私有项目1=[];
结果:对象;
公共mydata=[];
projectd:字符串;
构造函数(专用nav:NavController、navParams:navParams、公用菜单:菜单控制器、专用数据服务:数据、专用modalCtrl:ModalController、公用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&&u1471520478215')
.map((res:Response)=>res.json())
.订阅(
res=>{this.items1=res;
**警报(JSON.parse(this.items1))**
尝试
{
警报(JSON.parse(JSON.parse(this.items1.Data));
window.localStorage['mydata']=this.items;
}
捕获(e)
{
}
},
()=>console.log('getUserStatus Complete')//完成
);
this.selectedItem=navParams.get('item');
this.menu.enable(true,'mymenu');
this.dataService.getData().then((todos)=>{
如果(待办事项){
this.items=JSON.parse(todos);
}
});
}
项目(事件、项目){
此.nav.push(ItemDetailsPage{
项目:项目
});
}
附加项(){
让addModal=this.modalCtrl.create(AddItemPage);
addModal.ondidDisclease((项目)=>{
如果(项目){
这个.saveItem(项目);
}
});
addModal.present();
}
保存项目(项目){
此.items.push(item);
this.dataService.save(this.items);
}
视图项(项目){
此.nav.push(ItemDetailPage{
项目:项目
});
}
移除项目(项目){
对于(var i=0;i
“any[]”类型的参数不能分配给类型的参数 “字符串”

Type脚本中出现该错误的原因是
items1
属于any[]类型,并且您正在为其分配一个字符串(
this.items1=res

这不是执行时间上的错误,因为您可以在JS中为变量分配任何您想要的内容,并且只要您调用的方法或您使用它所做的事情不会引发异常,它就不会对此抱怨

为了避免类似的问题,请尝试显式声明代码中使用的属性类型

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

非常感谢@sebafereras它的工作NP,很高兴我能帮忙:)