Все для создания и продвижения сайтов

Верстка, программирование, SEO

Проверка ИНН на TypeScript

В данной заметке представлена функция по проверки ИНН на языке TypeScript. Помимо количества символов, нужно проверять по формуле связанной с контрольной суммой, её можно найти в интернете. Работает как со строками, так и с числами, проверяет на 9 значные ИНН (для организации) и 12 значные ИНН (для ИП);

const checkSumINN = {
    business(inn: number[]): boolean {
        return (inn.length === 10) && (
            inn[9] === (
                (
                    2 * inn[0] +
                    4 * inn[1] +
                    10 * inn[2] +
                    3 * inn[3] +
                    5 * inn[4] +
                    9 * inn[5] +
                    4 * inn[6] +
                    6 * inn[7] +
                    8 * inn[8]
                ) % 11
            ) % 10
        );
    },
    entrepreneur(inn: number[]): boolean {
        return (inn.length === 12) && (
            (
                inn[10] === (
                    (
                        7 * inn[0] +
                        2 * inn[1] +
                        4 * inn[2] +
                        10 * inn[3] +
                        3 * inn[4] +
                        5 * inn[5] +
                        9 * inn[6] +
                        4 * inn[7] +
                        6 * inn[8] +
                        8 * inn[9]
                    ) % 11
                ) % 10
            ) && (
                inn[11] === (
                    (
                        3 * inn[0] +
                        7 * inn[1] +
                        2 * inn[2] +
                        4 * inn[3] +
                        10 * inn[4] +
                        3 * inn[5] +
                        5 * inn[6] +
                        9 * inn[7] +
                        4 * inn[8] +
                        6 * inn[9] +
                        8 * inn[10]
                    ) % 11
                ) % 10
            )
        );
    }
};

export const isValidINN = (value: string | number): boolean => {
    const inn = String(value).split('').map(Number);

    return checkSumINN.business(inn) || checkSumINN.entrepreneur(inn);
};

Пример использования:

console.log(isValidINN(123456789)); // false
console.log(isValidINN(5504036333)); // true
console.log(isValidINN('5504036333')); // true
Выделите опечатку и нажмите Ctrl + Enter, чтобы отправить сообщение об ошибке.