【发布时间】:2018-11-01 23:08:45
【问题描述】:
在下面的代码中,类字段$LoadingMessage 可以为空,但是它将在构造函数中初始化。
export default class ImageFullScreenViewer {
private static readonly LOADING_MESSAGE_CSS_SELECTOR_BY_ID: string = '#ImageFullScreenViewer-LoadingMessage';
private $LoadingMessage: JQuery | null = null;
constructor (thumbnailsContainerSelectors: string | Array<string>, adaptedPageLayoutManager: AdaptedPageLayoutManager) {
this.$LoadingMessage = $(ImageFullScreenViewer.LOADING_MESSAGE_CSS_SELECTOR_BY_ID);
}
showLoadingMessage() {
this.$LoadingMessage.show(); // Object is possibly 'null'.
}
}
在严格模式下,TypeScript 在showLoadingMessage 方法中告诉我Object is possibly 'null'。 showLoadingMessage 是非静态方法,因此在没有 ImageFullScreenViewer 实例创建的情况下无法调用它。据我所知,jQuery 函数不会返回 null,因此可以保证使用非 null 值进行初始化。
“在这种情况下,TypeScript 消息对象可能是'null'是不合理的”结论对吗? (我想在 GitHub 中创建一个问题,但是他们需要的问题之前的 TODO 列表太麻烦了......)
【问题讨论】:
-
$LoadingMessage是可以为空的对象,而不是this。 -
为什么用
JQuery | null这个类型来表示一个不可为空的值? -
@JBNizet,好吧,因为我不知道其他方式。请教我。
-
@Silvermind,我想感谢
@types/jquery。
标签: typescript