You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从嵌套了UserDto的CompanyDto对象中获取属性?

如何从嵌套了UserDto的CompanyDto对象中获取属性?

嘿,看起来你在处理嵌套的DTO对象,想拿到里面UserDto的属性对吧?别担心,这事儿其实挺简单的,我给你分享几种实际开发里常用的做法:

  • 直接通过点语法访问
    只要你的CompanyDto实例已经正确初始化(不管是通过构造函数传入完整的嵌套对象,还是用class-transformer转换过),直接用点链就能拿到UserDto里的属性:

    // 先创建一个带嵌套UserDto的CompanyDto实例
    const company = new CompanyDto({
      id: 1,
      companyName: "Tech Corp",
      user: new UserDto({ id: 101, username: "john_doe", email: "john@example.com" })
    });
    
    // 直接获取UserDto的属性
    const userId = company.user.id;
    const userEmail = company.user.email;
    

    要是user字段有可能为undefined,记得用可选链操作符避免报错:company.user?.id

  • 结合class-transformer的转换场景
    既然你用到了class-transformer的@Type装饰器,记得一定要用plainToInstance(或者旧版的plainToClass)把原始JS对象转换成DTO实例,这样嵌套的user才会被正确转换成UserDto对象,而不是普通JS对象:

    import { plainToInstance } from 'class-transformer';
    
    // 假设这是从接口拿到的原始数据
    const rawCompanyData = {
      id: 2,
      companyName: "Design Studio",
      user: { id: 102, username: "jane_smith", email: "jane@example.com" }
    };
    
    // 转换成CompanyDto实例,@Type会自动处理嵌套的UserDto
    const company = plainToInstance(CompanyDto, rawCompanyData);
    
    // 现在就能正常访问嵌套属性了
    console.log(company.user.username); // 输出 "jane_smith"
    
  • 处理空值/未定义的情况
    实际开发里嵌套字段可能缺失,一定要做好防御性编程,比如用可选链+空值合并操作符:

    // 就算user不存在,也不会报错,会返回默认值
    const username = company.user?.username ?? "Unknown User";
    

备注:内容来源于stack exchange,提问作者derstauner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.13 17:38:13