javascript 打字脚本编译器错误TS1005:应为,“"

epggiuax  于 2023-03-16  发布在  Java
关注(0)|答案(1)|浏览(251)

键入脚本时遇到编译器错误。

[tsl] ERROR in /.../node_modules/@remirror/react-components/node_modules/@mui/base/useMenu/useMenu.d.ts(3,15)
      TS1005: ',' expected.
ts-loader-default_e3b0c44298fc1c14

在文件中,导入导致错误:

import { type MenuUnstyledContextType } from '../MenuUnstyled';

'type' is declared but its value is never read.ts(6133)
Module '"../MenuUnstyled"' has no exported member 'type'. Did you mean to use 'import type from "../MenuUnstyled"' instead?ts(2614)

不过,这在typescript 3.8中似乎是有效的,并且应用程序使用typescript ^4.3.5@babel/preset-typescript ^7.14.5
https://www.typescriptlang.org/docs/handbook/modules.html#:~:text=使用类型脚本、语句或使用导入类型

// Explicitly pull out a value (getResponse) and a type (APIResponseType) 
import { getResponse, type APIResponseType} from "./api";

有什么解决办法吗?

5w9g7ksd

5w9g7ksd1#

不过,这在 typescript 3.8中似乎是有效的
不幸的是,事实并非如此--你找到的文件非常具有误导性。
TypeScript 3.8引入了只使用import type …语法的类型导入:

  • 作为TypeScript 3.8中的一个解决方案,我们为仅类型导入和导出添加了新语法。*
import type { SomeThing } from "./some-module.js";

export type { SomeThing };
  • import type只导入用于类型注解和声明的声明。它总是被完全擦除,因此在运行时没有残留。类似地,export type只提供可用于类型上下文的导出,并且也从TypeScript的输出中擦除。*

您要查找的语法是在TypeScript 4.5中引入的:

* 导入名称上的type修饰符 *

[A type import] * 可以工作,但最好避免同一个模块使用两个import语句,这也是TypeScript 4.5允许在单独命名的import上使用type修饰符的部分原因,这样您就可以根据需要进行混合和匹配。*

import { someFunc, type BaseType } from "./some-module.js";
export class Thing implements BaseType {
    someMethod() {
        someFunc();
    }
}

因此,请更新TypeScript的版本,或将导入声明更改为

import type { APIResponseType } from "./api";
import { getResponse } from "./api";

相关问题