ریاکت نیتیو - چرا تایپاسکریپت برای یک نوع تعریفنشده خطای کامپایل نمیدهد


در اینجا یک نمونه ساده برای توضیح مشکل آورده شده است:

  1. من یک پروژهی سادهی RN ایجاد کردم با استفاده از npx react-native init MyApp --template react-native-template-typescript
  2. در App.tsx، من let foo: IThoughtTheWholePointOfATypeSafeLanguageWasNotToAllowShitLikeThis="...جدی میگی، چرا این بدون خطا کامپایل میشود!?"; را اضافه کردم
  3. من برنامه را با استفاده از yarn iOS اجرا میکنم

برنامه به خوبی اجرا میشود و خطایی در بستهبند وجود ندارد.

سؤال: چگونه میتوانم باعث شوم خطای کامپایل ایجاد شود؟

پاسخ شماره ۱

میتوانید از --strict در گزینههای کامپایلر خود استفاده کنید.

این خواهد:

تمام گزینههای بررسی نوع سختگیرانه را فعال کنید. فعال کردن --strict باعث فعال شدن --noImplicitAny، --noImplicitThis، --alwaysStrict، --strictBindCallApply، --strictNullChecks، --strictFunctionTypes و --strictPropertyInitialization میشود.

منبع: https://www.typescriptlang.org/docs/handbook/compiler-options.html

پاسخ شماره ۲

حلش کردم.

yarn tsc کامپایل را انجام میدهد و در صورت وجود، خطاهای نوع را تولید میکند. شما میتوانید این را به عنوان بخشی از دستورات دیگر در فایل package.json خود زنجیرهای کنید، با افزودن yarn tsc && قبل از دستور موجود، اگر نیاز دارید قبل از اجرای دستور مورد نظر، در صورت وجود خطای نوع، عملیات متوقف شود.

به عنوان مثال، یکی از دستورات در package.json من به شرح زیر است:
"test": "yarn tsc && rm -f __tests__/**/*.js && jest --coverage"

بیت rm ممکن است برای شما مفید باشد، زیرا من متوجه شدهام که اجرای tsc نسخههای .js از تمام فایلهای .ts شما تولید میکند.