我的意思是这样的代码
const someObj: { id: number } = {};
const num: number = someObj.id;
console.log(num);
num
这里是未定义的,绝对不是数字
最佳答案
这是一个 documented limitation对于未密封的对象:
Unsealed objects allow new properties to be written at any time. Flow ensures that reads are compatible with writes, but does not ensure that writes happen before reads (in the order of execution).
This means that reads from unsealed objects with no matching writes are never checked. This is an unsafe behavior of Flow which may be improved in the future.
所以通常流可以检查id
是否写成数字,但不能检查id
是否真的被写入了someObj
。
关于javascript - 为什么空对象对流类型中的非精确类型注解有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62728413/