javascript - Möjligt att inaktivera typkontroll?
Är det möjligt att inaktivera typkontroll när man använder TypeScript? Jag älskar TypeScript för klasser, gränssnitt osv., men för de mindre enpersonsprojekten jag normalt arbetar med behöver jag egentligen inte typkontroll och att inte hitta färdiga typdefinitioner för mindre vanliga bibliotek eller den senaste versionen av det är besvärligt.
Svar #1
I TypeScript 3.7 kommer typkontroll att inaktiveras på en fil om den börjar med följande kommentar:
// @ts-nocheck
Som redan nämnts, i tidigare versioner kan du inaktivera kontroll på en enskild rad genom att inkludera följande kommentar på föregående rad:
// @ts-ignore
Svar #2
I TypeScript kan typer vara valfria när de definieras på det sättet.
Eftersom det verkar som att det största problemet du har är att hitta typdefinitioner för externa bibliotek, kan du skapa en ambient definition för vilken variabel som helst som du inte vill typkontrollera:
declare var variableName: any;
Till exempel, för jQuery skulle det vara declare var $: any;. Då skulle du kunna göra: $("#test").myNonExistentFunction(); om du ville.
Alternativt, när man använder es2015-moduler kan följande kod skrivas för att möjliggöra att biblioteket importeras:
declare module "jquery" {
var _temp: any;
export = _temp;
}
Förkortade omgivande modulanmälningar (TS 2.0+)
I TS 2.0+ är ett bättre sätt att inaktivera typkontroll för importer att skapa en .d.ts-fil i ditt projekt och definiera korta globala moduldeklarationer:
declare module "jquery";
// or use a wildcard
declare module "express-*"; // or use "*" to allow everything
Detta kommer att tillåta dig att använda dessa importer fritt utan typkontroll:
import $ from "jquery";
$.something(); // ok at compile time, but will be an error at runtime
Det sagt, den bästa vägen att ta i detta scenario är i en .d.ts-fil i ditt projekt för att gradvis definiera gränssnittet för det bibliotek du förlitar dig på baserat på vad du använder.
ts-ignore-kommentarer (TS 2.6+)
Det är möjligt att inaktivera vilket TypeScript-fel som helst genom att använda // @ts-ignore-kommentarer i TypeScript 2.6+. Till exempel:
if (false) {
// @ts-ignore: Unreachable code error
console.log("hello");
}
Det kan dock leda till oväntat beteende när man använder kompilatorn eftersom den inte är väl testad. Jag skulle avråda från detta tillvägagångssätt om det inte är absolut nödvändigt.
Transformera med Babel
Om du inte behöver typkontroll är ett annat alternativ att använda Babel. Det stödjer TypeScripts syntax (se här).
