Если вам не нужно.

Отказ от ответственности. Написание этой статьи осуществлялось при поддержке ChatGPT. Новсе изложенные факты лично проверены, приведены ссылки и верны. Были применены тяжелые ручные добавления/перезаписи.

Как разработчик интерфейса, вы, вероятно, сталкивались с постоянным вопросом в сообществе TypeScript: нужны ли точки с запятой? 🤷‍♂️ Хотя мнения могут различаться, есть веские аргументы в пользу их исключения из вашего кода. В этом сообщении блога мы рассмотрим причины, по которым точки с запятой не нужны в TypeScript, сосредоточив внимание на автоматической вставке точек с запятой (ASI), историческом контексте использования точек с запятой в языках программирования и влиянии точек с запятой на код. раздуваться. Давайте погрузимся! 🏊‍♀️

Автоматическая вставка точки с запятой (ASI) в TypeScript

Автоматическая вставка точки с запятой или ASI — это функция ECMAScript и, соответственно, TypeScript. ASI позволяет автоматически вставлять точки с запятой в ваш код во время выполнения, что делает их использование необязательным во многих случаях.

Спецификация ECMAScript (https://262.ecma-international.org/13.0/#sec-rules-of-automatic-semicolon-insertion) подробно описывает правила для ASI. Вот краткое изложение трех основных правил:

  1. Когда строка заканчивается токеном, за которым не может следовать токен на следующей строке, вставляется точка с запятой.
  2. Когда встречается закрывающая фигурная скобка ('}'), вставляется точка с запятой, если это позволяет синтаксис.
  3. В конце входного потока вставляется точка с запятой, если без нее программа была бы синтаксически некорректной.

Примеры АСИ в действии

Рассмотрим следующий код TypeScript:

let x = 10
let y = 20
console.log(x + y)

Даже без точек с запятой этот код отлично работает благодаря ASI:

let x = 10;
let y = 20;
console.log(x + y);

ASI автоматически вставляет точки с запятой там, где это необходимо, позволяя разработчикам писать код без необходимости их явного включения. 🎉 Это означает; В вашем редакторе они опущены. Но после компиляции (в вашем index.bundle.js) они добавляются. Просто как тот.

Точки с запятой как артефакты старых языков программирования

Точки с запятой впервые были использованы в Алголе 58, который быстро перешел в Алгол 60 (Алгол 60 (baylor.edu)). Использование точки с запятой аналогично ее использованию в английском языке; он используется как разделитель для независимых утверждений.

Взгляните на следующий отрывок из Алгол 60 (baylor.edu):

BEGIN
COMMENT
//////////////////////////////////////////////////////////
// Name: Peter M. Maurer
// Program: Sieve of Eratosthenes
// Due: Never
// Language: Algol 60
//////////////////////////////////////////////////////////
;
COMMENT define the sieve data structure ;
INTEGER ARRAY candidates[0:1000];
INTEGER i,j,k;
COMMENT 1000 to protect against strict evaluation of AND ;
FOR i := 0 STEP 1 UNTIL 1000 DO
BEGIN
COMMENT everything is potentially prime until proven otherwise ;
candidates[i] := 1;
END;
...
WHILE k < 1000 DO
BEGIN
candidates[k] := 0;
j := j + 1;
k := j*i;
END;
COMMENT advance to the next candidate ;
i := i+1;
END
END;
COMMENT all uncrossed-out numbers are prime (and only those numbers) ;
COMMENT print all primes ;
FOR i := 0 STEP 1 UNTIL 999 DO
BEGIN
IF candidates[i] # 0 THEN
BEGIN
write(1,i);
text(1," is prime*N")
END
END;
END
FINISH

Использование точек с запятой упростило компиляторам анализ и интерпретацию кода. По мере развития языков программирования они начали принимать более удобочитаемый синтаксис, отходя от явных разделителей операторов, таких как точка с запятой. Современные языки, такие как Python и Go, являются примерами этой тенденции.

TypeScript — это надмножество JavaScript, которое, в свою очередь, основано на ECMAScript. Хотя использование точки с запятой стало необязательным благодаря ASI, историческое влияние старых языков программирования все еще заметно в TypeScript.

Лишние символы в коде

Точки с запятой могут сделать код менее кратким, добавляя ненужные символы. В результате раздувание кода может отрицательно сказаться на удобочитаемости и обслуживании.

В сообществе разработчиков наблюдается растущая тенденция к более чистым и минималистичным стилям кода. Современные руководства по стилю кода, такие как Руководство по стилю JavaScript от Airbnb, часто рекомендуют использовать точки с запятой, когда это необходимо. С потенциальными обновлениями ASI расположение точек с запятой со временем изменится или станет более сложным. Таким образом, может быть целесообразно позволить компилятору решить, куда его поместить. Это не только улучшает эстетику кода, но и согласуется с эволюцией языков программирования в сторону более удобочитаемого синтаксиса.

Давайте сравним два примера TypeScript — один с точкой с запятой и один без:

С точкой с запятой:

function add(a: number, b: number): number {
  let result = a + b;
  return result;
};

let sum = add(1, 2);
console.log(sum);

Без запятых:

function add(a: number, b: number): number {
  let result = a + b
  return result
}

let sum = add(1, 2)
console.log(sum)

Оба примера работают правильно, но вариант без точек с запятой более лаконичен и, возможно, легче читается. 🧐

Что это значит?

В этом сообщении блога мы рассмотрели причины, по которым ручная расстановка точек с запятой не нужна в TypeScript. Мы обсудили, как ASI автоматически вставляет точки с запятой, когда это необходимо, историю точек с запятой как артефакты старых языков программирования и влияние точек с запятой на раздувание кода.

Как разработчик внешнего интерфейса, вы можете включать или опускать точку с запятой в коде TypeScript. Хотя личные предпочтения играют роль в этом решении, стоит рассмотреть преимущества отказа от использования точки с запятой, такие как более чистый код и улучшенная читаемость. Кроме того, при работе в общей кодовой базе рекомендуется адаптироваться к существующему стилю. Такие плагины, как Prettier, могут помочь в обеспечении соблюдения таких правил.

В конечном счете, выбор за вами, но почему бы не попробовать TypeScript без точек с запятой? Возможно, вы обнаружите, что вам нравится более чистый и современный стиль. 🥳