LINUX.ORG.RU

История изменений

Исправление rtxtxtrx, (текущая версия) :

ты опять бредишь. в скриптовых языках одна строка, одно число (и разницы между int и float нет так как их можно складывать), булев, null(nil, None). скалярных типов мало. не нужно гадать какой разновидности число или строка. + код пишут все-таки в ide. я не знаю как проще объяснить. отсутствие указания типов при инициализации не является проблемой, их бывает сложно в функциях из контекста понять, поэтому сначала были придуманы всякие jsdoc,phpdoc,pydoc, а потом тайпхинты.

# тут ясно что email строка
# так же ясно, что функция вернет булев
def is_email(email): ...

# тут ясно что функция обрежет строку и вернет новую,
# что s(tring) - это строка, l(ength) - длина
def cut(s, l): ...

# тут ясно что host строка, а port число, ведь иначе не бывает
def connect(host, port): ...


# а если же есть неопределенность, то можно использовать тайпхинты для подсказки редактору
def decode(input: str) -> bytes: ...

В js нету тайпхинтов, но можно их через комментари указать. IDE их парсят:

/**
 * Обрезает строку до указанной длины.
 *
 * @param {string} str - Исходная строка, которую нужно обрезать.
 * @param {number} maxLength - Максимальная длина строки после обрезания.
 * @param {boolean} [addEllipsis=false] - Добавлять ли многоточие в конце обрезанной строки.
 * @returns {string} - Обрезаная строка.
 *
 * @example
 * // Обрезаем строку до 10 символов
 * const truncated = truncateString('Это очень длинная строка', 10);
 * console.log(truncated); // Вывод: 'Это очень '
 *
 * @example
 * // Обрезаем строку до 10 символов и добавляем многоточие
 * const truncatedWithEllipsis = truncateString('Это очень длинная строка', 10, true);
 * console.log(truncatedWithEllipsis); // Вывод: 'Это очень…'
 */
function truncateString(str, maxLength, addEllipsis = false) {
    if (str.length <= maxLength) {
        return str;
    }

    let truncated = str.slice(0, maxLength);

    if (addEllipsis) {
        truncated += '…';
    }

    return truncated;
}

Но для JS отсутствие тайпхинтов не является проблемой, так как он в отличии от Python не является универсальным языком, а лишь обраьатывает формы на странице, где значения полей почти всегда СТРОКИ, которых ВСЕГО ОДИН ТИП (точно так же и в баше все строки). Поэтому и TypeScript не нужен.

Ты приучаешь себя писать код, который не нужно документировать (самодокументируемый код, ага), а потом смотришь на тупизированых как на говно с их кучей закорючек и проблемами порожденными их языками. Удел скрпитобогов — быть непонятыми.

Исходная версия rtxtxtrx, :

ты опять бредишь. в скриптовых языках одна строка, одно число (и разницы между int и float нет так как их можно складывать), булев, null(nil, None). скалярных типов мало. не нужно гадать какой разновидности число или строка. + код пишут все-таки в ide. я не знаю как проще объяснить. отсутствие указания типов при инициализации не является проблемой, их бывает сложно в функциях из контекста понять, поэтому сначала были придуманы всякие jsdoc,phpdoc,pydoc, а потом тайпхинты.

# тут ясно что email строка
# так же ясно, что функция вернет булев
def is_email(email): ...

# тут ясно что функция обрежет строку и вернет новую,
# что s(tring) - это строка, l(ength) - длина
def cut(s, l): ...

# тут ясно что host строка, а port число, ведь иначе не бывает
def connect(host, port): ...


# а если же есть неопределенность, то можно использовать тайпхинты для подсказки редактору
def decode(input: str) -> bytes: ...

В js нету тайпхинтов, но можно их через комментари указать. IDE их парсят:

/**
 * Обрезает строку до указанной длины.
 *
 * @param {string} str - Исходная строка, которую нужно обрезать.
 * @param {number} maxLength - Максимальная длина строки после обрезания.
 * @param {boolean} [addEllipsis=false] - Добавлять ли многоточие в конце обрезанной строки.
 * @returns {string} - Обрезаная строка.
 *
 * @example
 * // Обрезаем строку до 10 символов
 * const truncated = truncateString('Это очень длинная строка', 10);
 * console.log(truncated); // Вывод: 'Это очень '
 *
 * @example
 * // Обрезаем строку до 10 символов и добавляем многоточие
 * const truncatedWithEllipsis = truncateString('Это очень длинная строка', 10, true);
 * console.log(truncatedWithEllipsis); // Вывод: 'Это очень…'
 */
function truncateString(str, maxLength, addEllipsis = false) {
    if (str.length <= maxLength) {
        return str;
    }

    let truncated = str.slice(0, maxLength);

    if (addEllipsis) {
        truncated += '…';
    }

    return truncated;
}

Но для JS отсутствие тайпхинтов не является проблемой, так как он в отличии от Python не является универсальным языком, а лишь обраьатывает формы на странице, где значения полей почти всегда СТРОКИ, которых ВСЕГО ОДИН ТИП