在 TypeScript 中声明变量有哪些不同的关键字?
Typescript 变量声明类似于 Javascript。每个关键字都有特定的范围。让我们在本文中了解变量声明。在 Typescript 中,可以使用以下关键字声明变量:
- 变量
- 让
- 常量
var 关键字:使用var声明变量 关键词。
var variable : number = 1;
var变量具有函数范围。它表明它们仅在它们形成的函数中可用,或者如果它们不是在函数中生成的,则它们是全局范围的。如果我在函数内部声明 var 然后尝试从函数外部调用它,它将函数。
number1是一个全局声明的数字。 number2具有它所在的函数的范围。 number3 ,即使它是在 if 循环中声明的,也可以在函数中访问它,因为它是使用 var 关键字声明的。
Javascript
var number1: number = 1;
function var_keyword() {
var number2: number = 2;
if (number1 + number2 == 3) {
var number3: number = 3;
}
console.log(number1);
console.log(number2);
console.log(number3);
}
var_keyword();
Javascript
let number1: number = 1;
function let_keyword() {
let number2: number = 2;
if (number1 + number2 == 3) {
let number3: number = 3;
}
console.log(number1);
console.log(number2);
console.log(number3); // Throws error
}
let_keyword();
Javascript
console.log(number1); // undefined
var number1: number = 1;
console.log(number2); // Throws error
let number2: number = 2;
Javascript
let student_name: string = "rachel";
let student_name: string = "john"; // Throws error
Javascript
const number1: number = 1;
function const_keyword() {
const number2: number = 2;
if (number1 + number2 == 3) {
const number3: number = 3;
}
console.log(number1);
console.log(number2);
console.log(number3); // Throws error
}
const_keyword();
Javascript
// Variable cannot be reassigned
const student_name: string = "rachel";
student_name = "john";
Javascript
// Can not redeclare variables
const student_name: string = "rachel";
const student_name: string = "john";
输出:
1
2
3
Let关键字:使用 让 关键词。
let variable : string = "geeksforgeeks";
let 变量是块作用域的。与 var 关键字不同,它为整个函数全局声明一个变量,而不管块范围如何,let 关键字允许您定义限制在使用它的块语句或表达式的范围内的变量。
number1是一个全局声明的数字。 number2具有它所在函数的范围。 number3在 if 循环中声明,它只能在 if 循环中访问,它是块范围的,因为它是使用 let 关键字声明的。
Javascript
let number1: number = 1;
function let_keyword() {
let number2: number = 2;
if (number1 + number2 == 3) {
let number3: number = 3;
}
console.log(number1);
console.log(number2);
console.log(number3); // Throws error
}
let_keyword();
输出:编译完ts文件后输出为:
error TS2552: Cannot find name 'number3'. Did you mean 'number2'?
console.log(number3); // Throws error
运行js文件后:
1
2
3
let 关键字优于 var 关键字的优点:
使用关键字 let 声明的变量在声明之前无法访问,在相同条件下 var 变量给出未定义的结果时会引发错误。
Javascript
console.log(number1); // undefined
var number1: number = 1;
console.log(number2); // Throws error
let number2: number = 2;
输出:
error TS2448: Block-scoped variable 'number2' used before its declaration.
console.log(number2);
使用 let 声明的变量不能重新声明。
Javascript
let student_name: string = "rachel";
let student_name: string = "john"; // Throws error
输出:
error TS2451: Cannot redeclare block-scoped variable 'student_name'.
let student_name: string = "john";
const 关键字:使用const关键字声明变量。
const variable : number = 9;
常量变量是 块作用域。 常量,就像用 let 关键字声明的变量一样,是块作用域的。不能通过重新分配新值来修改常量的值,也不能重新声明具有相同名称的变量。
number1是一个全局声明的数字。 number2具有它所在函数的范围。 number3在 if 循环中声明,它只能在 if 循环中访问,它是块范围的,因为它是使用 const 关键字声明的。 const 关键字与 let 类似,但不同之处在于 const 变量不能重新分配,使用 let 声明的变量可以重新分配。
Javascript
const number1: number = 1;
function const_keyword() {
const number2: number = 2;
if (number1 + number2 == 3) {
const number3: number = 3;
}
console.log(number1);
console.log(number2);
console.log(number3); // Throws error
}
const_keyword();
输出:编译完ts文件后输出为:
error TS2552: Cannot find name 'number3'. Did you mean 'number2'?
console.log(number3); //error
运行js文件后:
1
2
3
使用 const 类型声明的变量不能重新分配或重新声明
示例:以下示例演示了不能重新分配变量。
Javascript
// Variable cannot be reassigned
const student_name: string = "rachel";
student_name = "john";
输出:
error TS2588: Cannot assign to 'student_name' because it is a constant.
student_name = "john";
~~~~~~~~~~~~
示例:下面的示例演示了不能重新声明变量。
Javascript
// Can not redeclare variables
const student_name: string = "rachel";
const student_name: string = "john";
输出:
error TS2451: Cannot redeclare block-scoped variable 'student_name'.
const student_name: string = "john";