【发布时间】:2017-08-04 10:00:17
【问题描述】:
我有一个从后端 api 获取的数组对象数据。喜欢:
[
{name: 'react', age: 4},
{name: 'angular', age: 4},
...
{name: 'rxjs', age: 2}
]
我确定一个class 和一个interface,像这样:
interface IBook {
name: string;
age: number;
}
class Book{
book: IBook;
constructor(book: IBook) {
this.book = book;
}
//I can definite some method here:
getFullName() {
return this.book.firstName + ' ' + this.book.lastName;
}
isValid() {
return book.name.length > 0;
}
}
//when get the data
const dataModels = datas.map(data => {
return new Book(data);
});
所以我可以封装一些数据模型方法,比如book.getFullName()
我可以这样使用它:
const fullname = book.getFullName()
而不是这样:
const fullname = book.firstName + ' ' + book.lastName;
有没有更好的方法来做到这一点? 我不确定我的想法是否正确。
问题是如何按照正确的方式将js对象转换为ts类模型。
或者,只是确定数据interface。是否需要将javascriptjson数据转换为typescriptclass模型?
--更新--
尤其是嵌套数据。像这样:
const datas = [
{name: 'react', age: 2, tag: [{id: 1}, {id: 2}]}
]
【问题讨论】:
-
Typescript 在运行到浏览器之前被转换为 javascript。它可以处理 javascript 语法,因为最终 javascript 将要运行。您的对象应该只按名称具有正确的属性,并且它应该可用于 typescript 对象
-
@Amit 感谢您的回答,我更新了我的问题
-
stackoverflow.com/questions/45448199/… 给你更多的灵活性怎么样
-
@Kuncevic
Object.assign()和spread operator可以做到这一点。但它不适合嵌套数据。
标签: typescript