DEV Community

Evaldas
Evaldas

Posted on

Typescript for beginners: how to ignore code

Typescript is one of the best things that have happened in JavaScript world. It is a solid tool that checks for errors before they have happened. But sometimes we want to turn it off for some code.

There are several ways to ignore code in typescript:

Ignore code line with @ts-ignore rule:

this will ignore the code that is one line below

// @ts-ignore
const myAge : number = "25" // no typescript error
const isTrue : boolean = 4; // error

Usually this would throw an error about variable myAge not being type of number, but with @ts-ignore this error will be ignored.

Ignore code block with @ts-nocheck:

// @ts-nocheck
const myAge : number = "25" // no error
const isTrue : boolean = 4; // no error

🚨🚨@ts-nocheck will ignore the file, so if you want to ignore typescript checking on one function put it in separate file🚨🚨

This typescript rule should be used at the top of the file and it will ignore all code in the file.

**Typescript is meant to be helpful and allows us to write more robust, better structured code. Also it helps us to catch errors early, so use @ts-ignore and @ts-nocheck rules with caution.

Top comments (5)

Collapse
 
emahuni profile image
Emmanuel Mahuni

What actually wanted to do is make the compiler ignore the line completely and not even compile it. The reason is it's changing the code in such a way that it becomes useless. So I wanted ts to actually ignore the line completely and move to the next. In other words copy the line as it is and paste it in the output code.
I want the following line to remain that way:

isAsyncFunction = (fn: Function) => fn instanceof Object.getPrototypeOf(async function(){}).constructor;
Enter fullscreen mode Exit fullscreen mode

ts compiles this to:

isAsyncFunction = (fn) => fn instanceof Object.getPrototypeOf(function () {
    return __awaiter(this, void 0, void 0, function* () { });
}).constructor;
Enter fullscreen mode Exit fullscreen mode

I want it to at least not change how the line is going to behave.

Collapse
 
emahuni profile image
Emmanuel Mahuni • Edited

What I ended up doing was protect the code in an eval statement.

Collapse
 
spock123 profile image
Lars Rye Jeppesen

In my opinion you should not teach beginners this. This will make it too easy to hide errors, every time they hit something they don't understand.

ts-ignore should be used very very reluctantly, not as a tool for beginners to ignore compilation errors.

Collapse
 
lborgman profile image
lborgman

Right at this moment I am one of this beginners. And as usual when I try something new in IT I immediately stumble on a bug - in TypeScript this time.

//@ts-ignore was what I needed. Hiding this from beginners seems to me to be a very, very bad idea. I think you assume that beginners have not been programming before. That is just wrong.

Collapse
 
chadams profile image
Chad Adams

This is mostly used in situations where you are writing units tests. Say you want to test a function that takes a large complex object, but only operates on a smaller set of its data. you can pass in a smaller object missing the un-required keys, but that will throw a type error. This is a simple way around that.