Ich habe vor kurzem begonnen, TypeScript mit Expo zu verwenden. Ich habe alle Linter / Formatierer-Integrationen typescript-eslint
so durchgeführt, dass ich die meisten Fehler beim Codieren abfangen kann. Um zu überprüfen, ob der Code kompiliert wird, führe ich ab npx tsc
und zu aus und korrigiere entsprechend.
Eine Sache, die ich noch nicht vollständig verstanden habe, ist, warum meine App auch bei zahlreichen Kompilierungsfehlern erfolgreich erstellt wird. Ich erwarte (und bevorzuge), dass für jeden Kompilierungsfehler ein roter Bildschirmfehler angezeigt wird, anstatt dass die App erfolgreich erstellt wurde, und ich finde es später heraus. Zum Beispiel,
function square<T>(x: T): T {
console.log(x.length); // error TS2339: Property 'length' does not exist on type 'T'.
return x * x;
}
ist ein typischer TypeScript-Fehler, der (glaube ich?) beim Kompilieren leicht überprüft werden kann. Ich möchte, dass es zu einem großen roten Bildschirmfehler kommt und der Build fehlschlägt.
Ich bin ziemlich neu in TypeScript, daher fehlt mir möglicherweise etwas sehr Wichtiges. Was genau verursacht diese Nachsicht und gibt es eine Möglichkeit, strengere Kontrollen durchzusetzen?
npx tsc
aber ich möchte für jeden TypeScript-Fehler einen roten Bildschirm erhalten, genau wie für normale JS-Fehler.const n = 23; n.reverse();
Dies führt zu einem roten Bildschirm mit der Meldung "n.reverse ist keine Funktion. (In 'n.reverse ()', 'n.reverse' ist undefiniert) "Antworten:
Das erste, was zu verstehen ist, ist, dass Typescript eine Obermenge von Javascript ist und in diesem Fall beim Kompilieren nicht typgeprüft wird.
Im Wesentlichen entfernt Babel nur das Typoskript und konvertiert es in Javascript, das dann in die js-Bundles kompiliert wird.
Sie können sich die erste Zeile der folgenden Babel-Dokumente sowie die Vorbehalte ansehen: https://babeljs.io/docs/en/next/babel-plugin-transform-typescript
Was ich vorschlagen würde, ist die Erweiterung Ihres Build-Befehls, um zuerst die
tsc
Typescript-KompilierungnoEmit
einzuschließen oder vielmehr, und in Ihrer tsconfig auf true zu setzen.Update : Ich habe eine andere Instanz gefunden, in der dies kürzlich beim Hinzufügen
jest
undtypescript
zu einem Projekt zutrifft . Am Ende der Jest-Dokumente steht tatsächlich dasselbe:https://jestjs.io/docs/en/getting-started#using-typescript
quelle