TypeScript通过json格式创建对象
本文介绍了TypeScript通过json格式创建对象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
有这样的定义
class FruitProducer {
fruits: Fruit[] = [];
}
this.fruits[index] = {
alive: true,
x: this.position[aneId].x,
y: this.canvas.canvas.height - this.position[aneId].y,
size: 0,
type: Math.random() < 0.1 ? FruitType.Blue : FruitType.Orange,
speed: Math.random() * 0.040 + 0.010
};
Fruit中有方法,但我只想通过Json方式赋值一部分数据,但是编译器一直提醒我漏了赋值方法。
问,如何通过写json的方式创建Fruit对象(只赋值部分属性),而且编译器不会报错。
解决方案
你申明了
fruits:Fruit
,那么必须传入Fruit
我不知道你的Fruit
是否是interface
在
JavaScript
或者Typescript
里面,那玩意应该叫Object
如果你希望使用
JSON
初始化,你可以在Fruit
构造函数这么写
如果 Fruit
是interface
interface Fruit {
a:string;
}
// 强制转换
this.fruits[index] = <Fruit> {a: 'aaa'};
如果 Fruit
是 class
也可以强制转换,但是这样会导致 无法调用其函数
不推荐
class Fruit {
a:string;
}
this.fruits[index] = <Fruit> {a: 'aaa'};
正确的用法是使用构造函数
function deserialize(json, instance) {
for(var prop in json) {
if(!json.hasOwnProperty(prop))
continue;
if(typeof json[prop] === 'object')
deserialize(json[prop], instance[prop]);
else
instance[prop] = json[prop];
}
}
class Fruit {
constructor(json: Object){
deserialize(json, this);
}
}
this.fruits[index] = new Fruit({
...your object data...
});
参考答案
这篇关于TypeScript通过json格式创建对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文