React Native Expo Start ignorerer TypeScript-feil


Jeg bruker Expo med TypeScript, og når jeg kjører med expo start (og potensielt bygger), ignorerer det TypeScript-feilene mine.

VS Code vil fortsatt vise en feil, men jeg kan laste inn appen på nytt og kjøre den på telefonen min i Expo Go (noe som potensielt kan føre til kjøretidsfeil).

Hvordan kan jeg endre denne oppførselen, slik at kompilasjonsfeil gir en feil når jeg prøver å laste på nytt/kjøre/build appen?

Min tsconfig ser slik ut:

{
  "compilerOptions": {
    "strict": true,
    "noUncheckedIndexedAccess": true,
    "noEmitOnError": true
  },
  "extends": "expo/tsconfig.base"
}

(Jeg la til noEmitOnError for å se om det hjalp, det ser ikke ut til å endre oppførselen uansett)

Svar #1

Jeg satte ikke pris på svaret fra expo-teamet som sa at det ville være uklokt å sjekke noe slikt.

Etter min mening bør en bygging minst feile når et navn ikke kan finnes TS2304 eller ikke kan finnes men ligner på TS2552, noe som ville forårsake en kjøretidsfeil.

her er en måte å komme rundt dette på:

! npx tsc --noEmit | grep 'TS2552\|TS2304'
  • !: inverter utgangskoden (fordi grep vil returnere 0 hvis et treff finnes og 1 hvis ikke)
  • tsc --noEmit: bygger uten å skrive ut til en mappe (faktisk for å finne denne typen byggefeil)
  • |: pipe utdata fra noEmit-bygget til neste kommando
  • grep 'TS2552\|TS2304': se etter TS-feilen 2552 eller 2304

(du kan legge til andre regler å lete etter med \|<regel>, \| er en måte å escape or i grep)

du kan legge dette til pakkeskriptene dine slik at det kan brukes til å prefiksere andre kommandoer som lokal/distribusjon osv. ved å bruke && eller pre<scriptnavn>-syntaksen. hvis det avsluttes med 0, vil && fortsette til neste skript, hvis det avsluttes med 1, vil det stoppe og feile tidlig, det samme gjelder for preskriptet.

eksempel skript/bruk:

(merk den doble \\ eskapingen for json)

med kortslutning

"scripts": {
  "check:tsc": "! tsc --noEmit | grep 'TS2552\\|TS2304'",
  "ios": "yarn run check:tsc && npx expo run:ios",
  ...
}

med resept

å kjøre yarn run ios vil nå starte med yarn run check:tsc

"scripts": {
  "check:tsc": "! tsc --noEmit | grep 'TS2552\\|TS2304'",
  "preios": "yarn run check:tsc",
  "ios": "npx expo run:ios",
  ...
}

håper dette hjelper noen.

Relaterte artikler