J'ai récemment commencé à utiliser TypeScript avec Expo. J'ai fait toutes les intégrations linter / formatter comme typescript-eslint
pour que je puisse attraper la plupart des erreurs pendant le codage. Pour vérifier si le code se compile, je lance de npx tsc
temps en temps et corrige en conséquence.
Une chose que je n'ai pas encore entièrement comprise est la raison pour laquelle mon application se construit avec succès même en cas de nombreuses erreurs de compilation. Je m'attends (et je préfère) à voir une erreur d'écran rouge pour chaque erreur de compilation plutôt que la construction de l'application avec succès et je le découvrirai plus tard. Par exemple,
function square<T>(x: T): T {
console.log(x.length); // error TS2339: Property 'length' does not exist on type 'T'.
return x * x;
}
est une erreur TypeScript typique qui (je crois?) peut être facilement vérifiée au moment de la compilation. Je veux que cela entraîne une grande erreur d'écran rouge et que la construction échoue.
Je suis assez nouveau sur TypeScript, il est donc possible que je manque quelque chose de très important. Quelle est exactement la cause de cette clémence et existe-t-il un moyen d'appliquer des contrôles plus stricts?
npx tsc
mais je veux obtenir un écran rouge pour chaque erreur TypeScript, tout comme je le fais pour les erreurs JS normales commeconst n = 23; n.reverse();
cela se traduit par un écran rouge avec le message "n.reverse n'est pas une fonction. (Dans 'n.reverse ()', 'n.reverse' n'est pas défini) "Réponses:
La première chose à comprendre est que Typescript est un sur-ensemble de Javascript, et dans ce cas, le type n'est pas vérifié lors de la compilation.
Essentiellement, ce qui se passe est que Babel supprime simplement le TypeScript et le convertit en Javascript, qui est ensuite compilé dans les bundles js.
Vous pouvez consulter la première ligne des documents Babel suivants ainsi que les mises en garde: https://babeljs.io/docs/en/next/babel-plugin-transform-typescript
Ce que je suggérerais, c'est d'étendre votre commande build pour inclure d'abord
tsc
ou plutôt la compilation Typescript, avecnoEmit
la valeur true dans votre tsconfig.Mise à jour : j'ai trouvé une autre instance où cela s'applique récemment lors de l'ajout
jest
ettypescript
à un projet. Au bas des documents Jest, ils indiquent en fait la même chose:https://jestjs.io/docs/en/getting-started#using-typescript
la source