您好我正在使用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);
}
}
}
}
答案 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;