javascript - Typescript-kompilatorfel TS1005: ',' förväntades
Får ett kompileringsfel med TypeScript.
[tsl] ERROR in /.../node_modules/@remirror/react-components/node_modules/@mui/base/useMenu/useMenu.d.ts(3,15)
TS1005: ',' expected.
ts-loader-default_e3b0c44298fc1c14
I filen orsakar en import felet:
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)
Det verkar vara giltigt i TypeScript 3.8 dock, och appen använder typescript ^4.3.5 och @babel/preset-typescript ^7.14.5.
https://www.typescriptlang.org/docs/handbook/modules.html#:~:text=Med%20TypeScript%203.8%2C%20kan%20du,använda%20import%20typ%20
// Explicitly pull out a value (getResponse) and a type (APIResponseType)
import { getResponse, type APIResponseType} from "./api";
Några idéer på hur man löser det?
Svar #1
Det verkar dock vara giltigt i TypeScript 3.8
Tyvärr är det inte så - de dokument du hittade är mycket vilseledande.
TypeScript 3.8 introducerade typendast-importer endast med import type …-syntaxen:
Som en lösning i TypeScript 3.8 har vi lagt till en ny syntax för import och export som endast gäller typer.
import type { SomeThing } from "./some-module.js"; export type { SomeThing };
import typeimporterar endast deklarationer som ska användas för typannoteringar och deklarationer. Det tas alltid bort helt, så det finns inga rester av det vid körning. På samma sätt tillhandahållerexport typeendast en export som kan användas i typkontexter, och tas också bort från TypeScripts output.
Den syntax du letar efter introducerades med TypeScript 4.5:
type-modifierare på importnamn[En typimport] fungerar, men det skulle vara trevligt att undvika två importuttryck för samma modul. Det är en del av anledningen till att TypeScript 4.5 tillåter en
type-modifierare på individuella namngivna importer, så att du kan blanda och matcha efter behov.import { someFunc, type BaseType } from "./some-module.js"; export class Thing implements BaseType { someMethod() { someFunc(); } }
Så uppdatera din version av TypeScript, eller ändra din importdeklaration till
import type { APIResponseType } from "./api";
import { getResponse } from "./api";
