我将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,但我宁愿让打字稿理解我在做什么,而不是修复其缺陷。