我在后端使用XState,并且根据XState文档,我在状态机的配置中添加了类型注释:
export const machine = createMachine(
{
tsTypes: {} as import("./testMachine.server.typegen").Typegen0,
...,
}
但是,类型强制转换抛出以下错误:
`import()` type annotations are forbidden.eslint@typescript-eslint/consistent-type-imports
interface Typegen0
我研究了动态导入,但这似乎并不能解决这个问题:
const dynamicImport = async() => await import("./testMachine.server.typegen")
这是来自我的eslint。
这似乎只是一个检测错误。你的eslint配置需要一种导入类型的方式。我假设类型推断和你的代码仍然有效。
您可以通过在错误行上方直接放置忽略注释来禁用检查错误。我不确定我的评论是否100%正确,但在那个方向上应该禁用错误。
// eslint-disable-next-line @typescript-eslint/consistent-type-imports
// @ts-ignore
否则,你也可以使用这个答案的import语法,或者相应地调整你的eslint配置。
顺便说一句,我认为导入类型不需要await
。
默认情况下,在consistent-type-imports eslint规则中禁止使用import()
进行键入,但您可以通过在.eslintrc.json
规则部分将disallowTypeAnnotations
设置为false来允许它:
{
"rules": {
"@typescript-eslint/consistent-type-imports": ["error", {
"disallowTypeAnnotations": false
}],
...
它说你必须导入类型
import type { Typegen0 } from "./testMachine.server.typegen"
export const machine = createMachine(
{
tsTypes: {} as Typegen0,
...,
}
您可以在文档中阅读更多内容:https://typescript-eslint.io/rules/consistent-type-imports/#prefer