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
分配为名称为 backgroundLocation
的 state
的新 属性,但我仍然不理解整个功能。
这是一个 TypeScript type assertion。它与条件运算符无关。
as
告诉 TypeScript “忽略你计算的类型,而是假设它是我告诉你的类型”。 { backgroundLocation?: Location }
表示具有可选 属性 backgroundLocation 的对象。 backgroundLocation 的值是 undefined
(由于是可选的)或 Location
.
如果您的项目未设置为转译打字稿,那么您需要删除打字稿并直接执行 javascript。为此,只需删除 as { backgroundLocation?: Location }
我正在使用 React-Router-v6,我想传递一些道具作为 useRoutes()
中的位置。我有点困惑,因为我找到了一个例子 Modal 虽然这个例子没有使用 useRoutes()
我试图 运行 但一些操作员在我 运行 时抛出一些错误它。
我发现 ?:
为 conditional operator precedence
但我找不到它是如何工作的。它看起来像 ... ? ... : ...
,但这对我不起作用。
我的整个问题是下面的命令如何工作以及以下运算符(as
和 ?:
)的作用。
let state = useLocation().state as { backgroundLocation?: Location };
PS:我认为整个命令类似于将 Location
分配为名称为 backgroundLocation
的 state
的新 属性,但我仍然不理解整个功能。
这是一个 TypeScript type assertion。它与条件运算符无关。
as
告诉 TypeScript “忽略你计算的类型,而是假设它是我告诉你的类型”。 { backgroundLocation?: Location }
表示具有可选 属性 backgroundLocation 的对象。 backgroundLocation 的值是 undefined
(由于是可选的)或 Location
.
如果您的项目未设置为转译打字稿,那么您需要删除打字稿并直接执行 javascript。为此,只需删除 as { backgroundLocation?: Location }