gpt4 book ai didi

angular2 map 数据作为特定对象类型

转载 作者:太空狗 更新时间:2023-10-29 17:08:32 27 4
gpt4 key购买 nike

我根据 Angular2 教程创建了一个非常简单的应用程序。

首先,我有一个非常简单的“书籍”模型:

 /**
* 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);
})

回答您的问题。事实上,如果您的类型中只有字段(例如带有接口(interface)),则转换就足够了。此外,如果您有稍后要使用的方法,则有必要隐式创建 Book 类型的实例(见上文)而不是强制转换。否则您将无法使用它们(它们将在您的对象上未定义)...

有关详细信息,请参阅此问题:

关于angular2 map 数据作为特定对象类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36911348/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com