首页 > 解决方案 > TypeScript 对象中缺少属性,但在记录时可见

问题描述

我是 TypeScript 的新手,遇到了一个我无法解决的问题。

我有一种将一个对象转换为另一个对象的方法:

static fromPreload(preloadPackage: PreloadPackage, context: Context): PackageDocument {
    context.log(`PreloadPackage:\n ${JSON.stringify(preloadPackage, null, '\t')}`)
    let document: PackageDocument = new PackageDocument()
    context.log(`PreloadPackage dimensions:\n ${JSON.stringify(preloadPackage.dimensions, null, '\t')}`)
    document.courier_packageId = preloadPackage.packageId
    document.dimensions = preloadPackage.dimensions
    document.weight = preloadPackage.weight
    context.log(`PreloadPackage weight: ${preloadPackage.weight}`)
    context.log(`PackageDocument weight: ${document.weight}`)
    context.log(`PackageDocument:\n ${JSON.stringify(document, null, '\t')}`)
    return document
}

完成此转换后,转换后的对象会丢失重量。这是运行此方法的输出:

PreloadPackage:
 {
    "packageId": "courierPackageId2",
    "weight:": 1000,
    "dimensions": {
            "length": 100,
            "width": 100,
            "height": 100
    }
}
PreloadPackage dimensions:
 {
    "length": 100,
    "width": 100,
    "height": 100
}
PreloadPackage weight: undefined
PackageDocument weight: undefined
PackageDocument:
 {
    "courier_packageId": "courierPackageId2",
    "dimensions": {
            "length": 100,
            "width": 100,
            "height": 100
    }
}

因此,我的方法接收到正确的数据,并且在我重新映射后,除了权重属性之外,一切都存在。

我不知道为什么会这样,任何帮助将不胜感激。

标签: typescript

解决方案


如果您注意 Typescript 报告的错误,您会看到

Property 'weight' does not exist on type 'PreloadPackage'. Did you mean 'weight:'?(2551)

注意名称中的冒号,而不是后面的冒号。

错别字很正常。但是忽略来自 Typescript 编译器的错误消息不是。请注意。


推荐阅读