reactjs - create-react-app خطا در وارد کردن نوع * به عنوان PrettyFormat از './types' در pretty-format
این یک نصب تازه از CRA با قالب تایپاسکریپت است که روی Node 13.11.0 اجرا میشود و وقتی تلاش میکنم npm start را اجرا کنم به من خطا میدهد
TypeScript error in D:/Projects/personal-site/node_modules/@types/testing-library__react/node_modules/pretty-format/build/index.d.ts(7,13):
'=' expected. TS1005
5 | * LICENSE file in the root directory of this source tree.
6 | */
> 7 | import type * as PrettyFormat from './types';
| ^
8 | /**
9 | * Returns a presentation string of your `val` object
10 | * @param val any potential JavaScript object```
پاسخ شماره ۱
بهروزرسانی
از پست مارسلو-ویسمن متشکرم.
ارتقای تایپاسکریپت به بالاتر از 3.8.0 این مشکل را حل کرد.
اگر ما به دقت مستندات را دنبال کنیم...
yarn add typescript @types/node @types/react @types/react-dom @types/jest
... ما باید TypeScript را با آخرین نسخه نصب میکردیم، نه نسخه محلی-سراسری که ممکن است هنوز پایینتر از 3.8.0 باشد.
من چند سرنخ پیدا کردم. شاید ارزش داشته باشد که یک موضوع باز کنیم.
این مربوط به بسته pretty-format و نوع آن در create-react-app است. میتوانیم سورس را اینجا پیدا کنیم: pretty-format/src/index.ts
import style = require('ansi-styles');
import type * as PrettyFormat from './types';
از تاریخچه کامیت، میتوانیم ببینیم که یک درخواست پول مرتبط از دو روز پیش وجود دارد، که این بخش را از... تغییر داده است
import * as PrettyFormat from './types';
... به ...
import type * as PrettyFormat from './types';
به نظر میرسد که این علت خطا باشد.
پاسخ شماره ۲
در واقع این «import type» یک نحو جدید است که در تایپاسکریپت ۳.۸ معرفی شده است https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-8.html#type-only-imports-exports
راه حل در واقع بسیار ساده است (اگر این گزینه برای شما ممکن است)، فقط تایپاسکریپت خود را به نسخه ۳.۸ یا بالاتر ارتقا دهید
