如何重构此方法,使之更符合Typescript的习惯?

如何重构此方法,使之更符合Typescript的习惯?,typescript,Typescript,我在一个类中有一个方法: public get selectedExpansion():编号{ 让selection=localStorage.getItem(ConsolidateStacks.selection_键); 如果(选择==null){ 返回null; } 返回+选择; } 有没有一种方法可以简化/重构这个逻辑,使之更像typescript?在这种情况下,我认为它应该意味着不超过1-2行代码。例如,如果对空数字使用+是有效的,我可以这样做: return +localStorag

我在一个类中有一个方法:

public get selectedExpansion():编号{
让selection=localStorage.getItem(ConsolidateStacks.selection_键);
如果(选择==null){
返回null;
}
返回+选择;
}
有没有一种方法可以简化/重构这个逻辑,使之更像typescript?在这种情况下,我认为它应该意味着不超过1-2行代码。例如,如果对空数字使用
+
是有效的,我可以这样做:

return +localStorage.getItem(ConsolidateStacks.SELECTION_KEY);
但在我的测试中,这不起作用,我会出错

我还想过使用我认为是三元的东西,但不知何故它会将
null
转换为字符串,比如
“null”


注:我使用的是Typescript 3.5。我相信
?。
操作符在3.7中,这将是很好的,但是对于这个问题,假设我不能更改我的Typescript版本。

这实际上返回
number | null

public get selectedExpansion(): number | null {
    const selection = localStorage.getItem(ConsolidateStacks.SELECTION_KEY) 
    return selection ? parseInt(selection, 10) : null
}

+null
返回0,因此这不起作用。

我的理解是,Typescript中的所有类型都可以为null。因此,
| null
是多余的。如果我错了,请纠正我。我所拥有的一切似乎运行得很好。还有,你的回报声明与我的OP有什么不同/更好?e、 g.
返回选择+选择:空
Nullable和non-Nullable类型是显式的,因为它们需要不同的处理。如果您的选择是基于零的,例如,
null+10=10
。“无选择”与“选择第一项”不同。除了类型签名之外,
parseInt
更好,因为
parseInt
是Web规模的<代码>+选择来自JS贫民区,但无论如何-代码就像一个帮派!对不起,我还是不明白。如果返回类型上没有
|null
,我的代码如何工作正常?您的代码工作正常,只是没有调用它的代码会在IDE中警告您,它可能在运行时返回
null
,而不是数字。所以有可能出现意外行为。谢谢,我想我的最后一个问题是:在什么情况下(在调用站点),IDE会警告它将返回null?我可以看到IDE假设它可以一直为空,因为语言语义就是这样定义的。
public get selectedExpansion(): number | null {
    const selection = localStorage.getItem(ConsolidateStacks.SELECTION_KEY) 
    return selection ? parseInt(selection, 10) : null
}