类型 'undefined' 不可分配给类型 'T'

Type 'undefined' is not assignable to type 'T'

我用 typeScript 创建了一个地图,即

readonly stageTableMap: Map<string, SecureBucket>;

在这里,我按照以下方式将字符串和 SecureBucket 变量放入映射中。

stageTableMap.set(table, tableBucket);

当我按以下方式从此地图检索值时:-

SecureBucket bucket = stageTableMap.get(table);

这是给出如下错误:-

TS2322: Type 'SecureBucket' | undefined is not assignable to type 'SecureBucket'.

当我尝试将数据类型更改为 SecureBucket | undefined 时,它正在工作,但我想在不更改数据类型的情况下使用它。

我找到了这个 ,但它只是指将数据类型更改为 'SecureBucket | undefined '.

有人可以帮忙吗

它将成为 SecureBucket || undefined 因为它不能保证你传递给它的键会在你的地图中,如果键不存在于地图中它会抛出 undefined 作为默认值。

使用强制转换 stageTableMap.get(table) as SecureBucket 可能会给您错误的安全假设,而实际上如果您在 运行 时传递代码中不存在的密钥,它将 return 未定义,因此 SecureBucket | undefined 更符合您的代码

如果您想在代码的某处使用 return 类型的 SecureBucket,您希望使用 SecureBucket 的属性,所以在这种情况下,您可能应该检查密钥是否存在,如果不存在再