我正在尝试将
useSelect
与 TypeScript 一起使用来获取当前的帖子类型。在常规 JavaScript 中,此代码运行良好(实际上是古腾堡主存储库中使用的代码):
const postType = useSelect(
( select ) => select( 'core/editor' ).getCurrentPostType(),
[]
);
但是,当我转换为 TypeScript 时,这会引发类型错误:
Property 'getCurrentPostType' does not exist on type 'never'.ts(2339)
我看不出是什么原因造成的,为什么返回类型是
<never>
。
代码实际上可以正常工作并且编译得很好,但我希望它类型安全。任何有关如何解决此问题的想法将不胜感激。
您可以从
store
导入 "@wordpress/editor"
并使用它来代替商店名称。
import {useSelect} from "@wordpress/data"
import {store as CoreEditorStore} from "@wordpress/editor"
/* ... */
const postType = useSelect(
(select) => select(CoreEditorStore).getCurrentPostType(),
[],
)
/* ... */
来自来源:
/*
* (...)
* @param storeNameOrDescriptor The store descriptor. The legacy calling convention
* of passing the store name is also supported.
* (...)
*/