В TypeScript доступны следующие области видимости:

  1. Область видимости блока (Block scope)

Область видимости блока (block scope) определяет доступность переменной внутри блока кода, заключенного в фигурные скобки {}. Переменные, объявленные внутри блока, не видны за его пределами.

function test() {
  let x = 10;
 
  if (true) {
    let y = 20;
    console.log(x); // 10
    console.log(y); // 20
  }
 
  console.log(x); // 10
  console.log(y); // Error: Cannot find name 'y'
}

В этом примере переменная x доступна внутри функции test, а переменная y доступна только внутри блока if.

  1. Область видимости функции (Function scope)

Область видимости функции (function scope) определяет доступность переменной внутри функции, независимо от того, где она была объявлена в функции. Переменные, объявленные внутри функции, не видны за ее пределами.

function test() {
  let x = 10;
 
  function inner() {
    let y = 20;
    console.log(x); // 10
    console.log(y); // 20
  }
 
  inner();
  console.log(x); // 10
  console.log(y); // Error: Cannot find name 'y'
}

В этом примере переменные x и y доступны только внутри функции test и внутри функции inner, которая была определена внутри test.

  1. Глобальная область видимости (Global scope)

Глобальная область видимости (global scope) определяет доступность переменной внутри всей программы, независимо от того, где она была объявлена. Переменные, объявленные в глобальной области видимости, видны из любой части программы.

let x = 10;
 
function test() {
  console.log(x); // 10
}
 
test();
console.log(x); // 10

В этом примере переменная x объявлена в глобальной области видимости и может быть использована внутри функции test и в любой другой части программы.

  1. Область видимости модуля (Module scope)

Область видимости модуля (module scope) определяет доступность переменных и функций внутри модуля. Модуль - это файл или набор файлов, которые экспортируют и импортируют функции и переменные.

// module1.ts
export let x = 10;
 
// module2.ts
import { x } from './module1';
 
function test() {
  console.log(x); // 10
}
 
test();
console.log(x); // Error: Cannot find name 'x'

В этом примере переменная x определена в модуле module1 и экспортирована с помощью ключевого слова export. Затем она импортируется в модуле module2 с помощью ключевого слова import. Переменная x доступна только внутри модуля module2 и внутри функции test.

Область видимости определяет, где и как переменные и функции могутбыть использованы в программе. Правильное использование областей видимости помогает избежать конфликтов и ошибок в программе.


Назад