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

راه حل در واقع بسیار ساده است (اگر این گزینه برای شما ممکن است)، فقط تایپاسکریپت خود را به نسخه ۳.۸ یا بالاتر ارتقا دهید