我有一个HTTP API.
我正在加载一组对象作为json.
我正在加载一组对象作为json.
我想要转换为Typescript对象,但是使用关键字“as”它不起作用,甚至不能使用<输入>在对象面前.
r.forEach(entry => { entry.creationDate = new Date(entry.creationDate.date); entry.creator = <User>entry.creator; return entry; });
在entry.creator转换后直接输出console.log输出一个普通的“对象”.
有人可以给我一个建议吗?
解决方法
我一直在努力解决类似的问题,在我看来这是打字稿中的缺陷.当你像你一样做演员表时.或者像这样的示例代码:
class User { name: string; doConsole(): void { console.log(`Name: ${this.name}`); } } let userObj = { name: 'jose' }; let user = new User(); Object.assign(user,userObj); user.doConsole();
您会注意到doConsole将不是已转换对象中的函数.这就是生成的JS:
var User = (function () { function User(name) { this.name = name; } User.prototype.doConsole = function () { console.log("Name: " + this.name); }; return User; }()); var userObj = { name: 'jose' }; var user = userObj; user.doConsole();
正如您所看到的那样,它不会使用您在进行强制转换时由类准备的原型函数.
我的另一种选择是做这样的事情:
class User { name: string; doConsole(): void { console.log(`Name: ${this.name}`); } } let userObj = { name: 'jose' }; let user = new User(); Object.assign(user,userObj); user.doConsole();
var User = (function () { function User() { } User.prototype.doConsole = function () { console.log("Name: " + this.name); }; return User; }()); var userObj = { name: 'jose' }; var user = new User(); Object.assign(user,userObj); user.doConsole();
所以基本上我所说的是我同意你的意思,它应该像你一样工作,但是转换器不使用原型函数,所以它不起作用.
我希望这可以帮助你.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。