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,很高兴我能帮忙:)