В 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.
Область видимости определяет, где и как переменные и функции могутбыть использованы в программе. Правильное использование областей видимости помогает избежать конфликтов и ошибок в программе.