如何重构此方法,使之更符合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
}