我在typeScript中创建了一张地图。
readonly stageTableMap: Map<string, SecureBucket>;
在这里,我以如下方式在map中放置string & 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财政”。
有人能帮忙吗。
发布于 2021-03-21 04:07:15
它将是未定义的,因为它没有保证您传递的密钥将在您的映射中,如果映射中不存在密钥,它将抛出未定义为默认值的值。
使用强制转换stageTableMap.get(table) as SecureBucket
可能会给您提供一个错误的安全假设,而实际上,如果您在运行时传递代码中不存在的键,它将返回未定义的值,因此SecureBucket | undefined
更符合您的代码。
如果您希望在代码的某个地方有一个返回类型的SecureBucket,您希望使用SecureBucket的属性,所以在这种情况下,您可能应该检查密钥是否存在,如果不重新
https://stackoverflow.com/questions/66730292
复制相似问题