gpt4 book ai didi

javascript - 为什么空对象对流类型中的非精确类型注解有效?

转载 作者:行者123 更新时间:2023-12-01 16:25:16 24 4
gpt4 key购买 nike

我的意思是这样的代码

const someObj: { id: number } = {};
const num: number = someObj.id;
console.log(num);

num 这里是未定义的,绝对不是数字

可以在此处查看代码片段 https://flow.org/try/#0PQKgBAAgZgNg9gdzCYAoAxnAdgZwC5g5wC2ApgPIBGAVgFxgDeYAlgCb1YCuxlpATmAC+YALyNBAbgzZ8YLsQ7deAsUTJVqAOjYSgA

最佳答案

这是一个 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com