我应该如何将加载标志链接到打字稿中的数据

问题描述 投票:0回答:1

我有一个

started
标志,然后是有关某些操作进度的其他数据。

let started: boolean = false;
let foo: number|undefined = undefined;
let bar: string|undefined = undefined;

在操作开始之前,任何其他数据都是

undefined

如果我有一个函数可以改变这种状态,那么打字稿会警告我
foo
可能是
undefined
,因为我没有明确地将它链接到
started

function mutate() {
  if (!started) return;
  foo++;
  bar = "qaax";
}

有没有办法告诉打字稿,

foo
bar
仅在
started
false
时未定义,如果没有,那么处理此类数据存在依赖于的情况的最佳方法是什么其他一些数据的价值?

潜在的解决方案

  • 我可以使用 -1 而不是 undefined,但这可读性较差,有时数据会使用 -1。

  • 或者,我可以单独检查

    foo
    bar
    是否未定义,但是对于更复杂的数据,这会变得极其低效。

  • 由于操作是否已开始是单独跟踪的,因此我可以将

    foo
    bar
    保留为任何值,因为一旦操作开始,它们的值将被重置为有意义的值。然而,这又会降低可读性。

typescript undefined flags
1个回答
0
投票

类型检查器无法从运行时状态推断变量是否未定义。 所以可选的链接运算符“?”引入是为了减少样板代码,如下所述https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-7.html#optical-chaining。 这只是手动检查“foo”是否未定义的简写。

© www.soinside.com 2019 - 2024. All rights reserved.