打字稿错误地将变量标记为永不

时间:2019-07-02 08:00:45

标签: typescript realm

我将Realm和Typescript一起用于NodeJS。 它具有一个写函数,该函数需要一个在写事务中运行的箭头函数。 根据我发现的内容以及文档中的内容,看来写入是同步运行的。

这是我想做的事的一个例子:

let myObject: MyObject | undefined = undefined;
database.write(() => {
  myObject = database.create<MyObject>('MyObject', myObjectData);
});
// using myObject here

这里的问题是,打字稿将myObject标记为if语句内写操作以下的类型。我可以看到,如果写操作不会发生,并且重新分配变量的类型将永远不会发生,但是由于某种原因,它不会检测到变量(在块内)是否正在重新分配。

另一个例子:

let myObject: MyObject | undefined;
    database.write(() => {
      myObject = database.create<MyObject>('MyObject', myObjectData);
    });
    if (myObject != undefined) {
       // myObject is of type never here according to typescript
    }

在此示例中,它抱怨myObject在初始化之前被使用。

谁能给我关于如何在数据库写块中分配变量的见解?我永远不会投向MyObject,但我宁愿让打字稿理解我在做什么,而不是修复其缺陷。

0 个答案:

没有答案