В TypeScript доступны следующие области видимости:
- Область видимости блока (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
.
- Область видимости функции (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
.
- Глобальная область видимости (Global scope)
Глобальная область видимости (global scope) определяет доступность переменной внутри всей программы, независимо от того, где она была объявлена. Переменные, объявленные в глобальной области видимости, видны из любой части программы.
let x = 10;
function test() {
console.log(x); // 10
}
test();
console.log(x); // 10
В этом примере переменная x
объявлена в глобальной области видимости и может быть использована внутри функции test
и в любой другой части программы.
- Область видимости модуля (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
.
Область видимости определяет, где и как переменные и функции могутбыть использованы в программе. Правильное использование областей видимости помогает избежать конфликтов и ошибок в программе.