JSX 运算符优先级 ?: and?

JSX Operator precedence ?: and?

我正在使用 React-Router-v6,我想传递一些道具作为 useRoutes() 中的位置。我有点困惑,因为我找到了一个例子 Modal 虽然这个例子没有使用 useRoutes() 我试图 运行 但一些操作员在我 运行 时抛出一些错误它。
我发现 ?:conditional operator precedence 但我找不到它是如何工作的。它看起来像 ... ? ... : ... ,但这对我不起作用。

我的整个问题是下面的命令如何工作以及以下运算符(as?:)的作用。

let state = useLocation().state as { backgroundLocation?: Location };

PS:我认为整个命令类似于将 Location 分配为名称为 backgroundLocationstate 的新 属性,但我仍然不理解整个功能。

这是一个 TypeScript type assertion。它与条件运算符无关。

as 告诉 TypeScript “忽略你计算的类型,而是假设它是我告诉你的类型”。 { backgroundLocation?: Location } 表示具有可选 属性 backgroundLocation 的对象。 backgroundLocation 的值是 undefined(由于是可选的)或 Location.

如果您的项目未设置为转译打字稿,那么您需要删除打字稿并直接执行 javascript。为此,只需删除 as { backgroundLocation?: Location }