【发布时间】:2021-04-28 14:24:45
【问题描述】:
我有这样的课:
export class Broker<T> implements BrokerContract<T> {
topicToSubscribersMap: Map<string, Set<Subscriber<T>>>;
.
.
.
public registerSubscriber(topic: string, subscriber: Subscriber<T>): void {
if (this.topicToSubscribersMap.get(topic)) {
let currentSubscribers: Set<Subscriber<T>> = this.topicToSubscribersMap.get(topic);
}
}
.
.
}
在函数registerSubscriber 中,当我尝试从地图中获取值时,Typescript 抱怨我们无法将V | undefined 的类型分配给V,因为Map 上的get 方法返回V | undefined。
现在,我知道我可以做到这一点 -
let currentSubscribers: Set<Subscriber<T>> = <Set<Subscriber<T>>>this.topicToSubscribersMap.get(topic);
或者这个-
let currentSubscribers: Set<Subscriber<T>> = this.topicToSubscribersMap.get(topic) as Set<Subscriber<T>>;
但我担心的是,当我已经在封闭的if 条件中检查undefined 时,为什么还要这样做?
另外,由于这是 Map 的 get 方法的签名本身以返回 V | undefined 类型,并且假设这种情况通常最常出现 - 处理它的最佳方法是什么?
【问题讨论】:
标签: javascript typescript types typescript-typings