我在 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'.
当我尝试将 dataType 更改为 SecureBucket | undefined
时,它可以工作,但我想在不更改 dataType 的情况下使用它。
我发现了这个 post ,但它只是指将 dataType 更改为 'SecureBucket |未定义 '.
有人可以帮忙吗。
答案 0 :(得分:1)
它将是 SecureBucket || undefined 因为它不保证您传递给它的密钥将在您的地图中,如果该密钥不存在于地图中,它会将 undefined 作为默认值抛出。
使用强制转换 stageTableMap.get(table) as SecureBucket
可能会给您错误的安全假设,而实际上如果您在运行时传递代码中不存在的密钥,它将返回 undefined,因此 SecureBucket | undefined
更符合你的代码
如果您希望在代码的某处使用 SecureBucket 的返回类型,您希望使用 SecureBucket 的属性,因此在这种情况下,您应该检查密钥是否存在,如果不存在则重新