When working with TypeScript, I often encounter situations where I need to temporarily ignore type checking for specific lines of code. It is generally required when I’m working with a third-party library that doesn’t have proper type definitions, or I have to do complex refactoring and need to suppress errors temporarily.
In this article, I’ll exaplain how to Ignore line in TypeScript and share several methods to ignore TypeScript errors for specific lines of code. I’ll cover everything from the simple comment-based approaches to more complex configuration options.
Using // @ts-ignore to Ignore the Next Line
The simplest way to ignore TypeScript errors on a specific line is by using the // @ts-ignore comment directive.
Let’s say you’re working on a financial application for a US bank that processes transaction data, but one of your API calls triggers a type error:
type Transaction = {
ammount: number;
amount?: number;
};
function calculateTax(amount: number): number {
return amount * 0.18;
}
function processTransaction(transaction: Transaction) {
const amount = transaction.ammount;
console.log('Transaction amount:', amount);
return calculateTax(amount);
}
const t: Transaction = { ammount: 5000 };
const tax = processTransaction(t);
console.log('Calculated Tax:', tax);Output:

By placing // @ts-ignore above the problematic line, TypeScript will skip type checking for that specific line only. This is particularly useful when you know something will work at runtime despite TypeScript’s objections.
This lets you safely demonstrate @ts-ignore without real type definitions or API calls.
Check out: Check If a Key Exists in a Object
Using // @ts-expect-error for Better Practices
Starting with TypeScript 3.9, there’s a more precise alternative to @ts-ignore called @ts-expect-error:
type HomeLoan = {
principal: number;
interestRate: string; // Should be number ideally, but sometimes it's string (bad data)
};
function calculateMortgage(loan: HomeLoan) {
const rate = parseFloat(loan.interestRate); // This will throw an error if 'interestRate' is not string
console.log('Parsed interest rate:', rate);
return loan.principal * rate / 12;
}
const myLoan: HomeLoan = {
principal: 240000,
interestRate: "0.065", // 6.5% annual interest
};
const monthlyPayment = calculateMortgage(myLoan);
console.log('Estimated Monthly Payment:', monthlyPayment.toFixed(2));Output:

The advantage of @ts-expect-error is that it will raise an error if the line it’s applied to doesn’t actually contain a TypeScript error. This prevents the situation where you add a comment to ignore an error, fix the error later, but forget to remove the comment.
Ignoring Entire Files with // @ts-nocheck
Sometimes you might need to disable type checking for an entire file. This is common when migrating JavaScript to TypeScript incrementally:
// @ts-nocheck
// TypeScript will skip all type checks below this line
function processTaxReturns(data) {
console.log('Processing tax returns for:', data.name);
return {
refundAmount: data.income * 0.1,
};
}
export function calculateRefund(taxData) {
const processed = processTaxReturns(taxData);
console.log('Processed Result:', processed);
return processed.refundAmount;
}
const taxpayer = {
name: 'John Doe',
income: 85000,
};
const refund = calculateRefund(taxpayer);
console.log('Refund Amount:', refund);Output:

Place // @ts-nocheck at the top of the file, and TypeScript will skip type checking for the whole file.
Check out: Ternary Operator in TypeScript
Using TypeScript Config to Control Error Reporting
For more systematic control, you can modify your tsconfig.json to suppress specific error types:
{
"compilerOptions": {
"suppressImplicitAnyIndexErrors": true,
"noImplicitAny": false
}
}This approach is better for project-wide concerns rather than ignoring specific lines.
Creating Type Assertions for Targeted Ignores
Another approach is to use type assertions to override TypeScript’s inference:
function maskSSN(ssn: string): string {
// Masking all but last 4 digits: 123-45-6789 → ***-**-6789
return ssn.replace(/\d(?=\d{4})/g, '*');
}
function processUserData(user: any) {
// TypeScript would normally complain about 'ssn' not being defined
const socialSecurity = (user as any).ssn;
console.log('SSN to be masked:', socialSecurity);
// Process US social security number
return maskSSN(socialSecurity);
}
const userData = {
name: 'Jane Doe',
ssn: '123-45-6789',
};
const masked = processUserData(userData);
console.log('Masked SSN:', masked);Output:

The as any type assertion tells TypeScript to treat the object as the any type, effectively disabling type checking for that expression.
Check out: TypeScript Type Narrowing
Using // @ts-ignore with JSDoc Comments
If you’re working with JavaScript files that use JSDoc for TypeScript type checking, you can still use // @ts-ignore:
/**
* Calculates federal tax for a US taxpayer
* @param {TaxPayer} taxpayer - The taxpayer information
*/
function calculateFederalTax(taxpayer) {
// @ts-ignore
const income = taxpayer.totalIncome();
// Tax calculation logic
}Output:

Ignoring Specific Type Errors
Sometimes you want to ignore only specific types of errors while keeping other type checking intact:
// In tsconfig.json
{
"compilerOptions": {
"suppressExcessPropertyErrors": true
}
}This can be more targeted than blanket ignores.
Check out: TypeScript Constructor Overloading
Best Practices for Ignoring TypeScript Errors
While ignoring errors can be necessary, here are some best practices I’ve developed over my years of TypeScript experience:
- Add explanatory comments: Always explain why you’re ignoring an error.
// @ts-ignore We're using a polyfill for this method that TypeScript doesn't recognize
document.querySelector('.tax-form').smoothScroll();- Use temporary TODOs: Mark ignored errors that need fixing later.
// @ts-ignore TODO: Need proper type definitions for this library
const taxRate = getTaxRateForState('California');
console.log('Fetched tax rate:', taxRate);
function getTaxRateForState(state: string): number {
const rates: { [key: string]: number } = {
California: 0.0725,
Texas: 0.0625,
NewYork: 0.04,
};
return rates[state] || 0.05;
}Output:

- Prefer targeted solutions: Instead of // @ts-ignore, consider adding proper types.
// Instead of ignoring errors on 'amountString'
function processPayment(amount: string | number) {
const numericAmount = typeof amount === 'string' ? parseFloat(amount) : amount;
return numericAmount * 1.0825; // Add Texas sales tax
}Output:

- Audit your ignores regularly: Set up a process to review and clean up ignored errors.
When to Avoid Ignoring TypeScript Errors
There are cases where ignoring errors isn’t the best approach:
- When working on new code (as opposed to legacy code migration)
- For critical security or financial calculation functions
- When the proper solution is to improve your types
Check out: Create an Object from an Interface in TypeScript
Using Type Guards Instead of Ignoring
Often, a better alternative to ignoring type errors is to use type guards:
function processUserData(userData: unknown) {
// Instead of @ts-ignore, use a type guard
if (isValidUserData(userData)) {
const fullName = userData.firstName + ' ' + userData.lastName;
console.log('Valid user:', fullName);
return fullName;
}
console.log('Invalid user data');
return 'Invalid user';
}
// Type guard function
function isValidUserData(data: any): data is { firstName: string; lastName: string } {
return data !== null &&
typeof data === 'object' &&
typeof data.firstName === 'string' &&
typeof data.lastName === 'string';
}
// Test with a valid object
const result1 = processUserData({ firstName: 'John', lastName: 'Doe' });
console.log('Result 1:', result1);
// Test with invalid input
const result2 = processUserData(null);
console.log('Result 2:', result2);Output:

Type guards provide runtime safety in addition to compile-time type checking.
I hope you found this article helpful for managing TypeScript errors in your projects. While ignoring errors should generally be a last resort, these techniques can be invaluable when dealing with complex real-world TypeScript applications, especially during migrations or when working with external code.

I am Bijay Kumar, a Microsoft MVP in SharePoint. Apart from SharePoint, I started working on Python, Machine learning, and artificial intelligence for the last 5 years. During this time I got expertise in various Python libraries also like Tkinter, Pandas, NumPy, Turtle, Django, Matplotlib, Tensorflow, Scipy, Scikit-Learn, etc… for various clients in the United States, Canada, the United Kingdom, Australia, New Zealand, etc. Check out my profile.