如何避免 ionic2 应用程序中的打字稿错误?
How to avoid typescript errors in ionic2 application?
你好,我正在使用 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);
}
}
}
}
Argument of type 'any[]' is not assignable to parameter of type
'string'
你在 Typescript 中得到那个错误的原因是因为 items1
的类型是 any[]你给它分配了一个 string (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;
你好,我正在使用 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);
}
}
}
}
Argument of type 'any[]' is not assignable to parameter of type 'string'
你在 Typescript 中得到那个错误的原因是因为 items1
的类型是 any[]你给它分配了一个 string (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;