angular – Typescript对象转换不起作用
发布时间:2020-12-17 06:57:44 所属栏目:安全 来源:网络整理
导读:我有一个HTTP API. 我正在加载一组对象作为json. 我想要转换为Typescript对象,但是使用关键字“as”它不起作用,甚至不能使用输入在对象面前. r.forEach(entry = { entry.creationDate = new Date(entry.creationDate.date); entry.creator = Userentry.creat
我有一个HTTP API.
我正在加载一组对象作为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(); 这可以确保您使用原型函数,正如生成的JS所示: 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(); 所以基本上我所说的是我同意你的意思,它应该像你一样工作,但是转换器不使用原型函数,所以它不起作用. 我希望这可以帮助你. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |