我根据 Angular2 教程创建了一个非常简单的应用程序。
首先,我有一个非常简单的“Book”模型:
/**
* book model
*/
export class Book {
public data;
/**
* constructor
* @param id
* @param title
* @param pages
*/
constructor(
public id,
public title:string,
public pages:Array
){
alert('it works'); // just a check
}
}
在我的服务中,我得到这样一本书:
return this._http.get('getBook/1')
.map(function(res){
return <Book> res.json();
})
我的期望是,这将获取生成的 JSON 数据并将其“映射”到 Book 对象。
但是,它只返回一个类型为“Object”的对象。
我可以自己创建一个新的 Book 对象并在构造函数中传递参数,如下所示:
return new Book(res.id, res.title, res.pages);
这是最好的方法吗?我错过了什么?
是的,将对象转换为 TypeScript 中的类型不会创建该类型的实例。它只是 TypeScript 的一个用于类型检查的工具。
如果你实际上想要一个实例Book
你需要使用类似的东西:
return this._http.get('getBook/1')
.map(function(res){
var data = res.json();
return new Book(data.id, data.title, data.pages);
})
回答你的问题。事实上,如果您的类型中只有字段(例如带有接口),则强制转换就足够了。此外,如果您想稍后使用方法,则有必要隐式创建该方法的实例Book
类型(见上文)而不是强制转换。否则你将无法使用它们(它们在你的对象上将是未定义的)...
请参阅此问题了解更多详细信息:
- 如何将 JSON 对象转换为 Typescript 类
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)