加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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();

所以基本上我所说的是我同意你的意思,它应该像你一样工作,但是转换器不使用原型函数,所以它不起作用.

我希望这可以帮助你.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读