TypeScript 中的标识符和关键字


在本教程中,我们将学习 TypeScript 中的标识符和关键字。标识符和关键字是 TypeScript(JavaScript 的静态类型超集)中的两个基本概念。标识符是我们赋予代码中变量、函数、类和其他内容的名称。关键字是 TypeScript 中具有特定含义的特殊单词,不能用作标识符。

为了避免语法错误,标识符在命名变量、函数和类时必须遵循某些规则。另一方面,将关键字用作标识符会导致错误,并使我们的代码难以阅读和理解。

TypeScript 中标识符和关键字的规则和最佳实践

在 TypeScript 中,标识符和关键字在编写可维护且无错误的代码中起着至关重要的作用。

标识符

以下是在使用 TypeScript 中的标识符时需要记住的一些规则和最佳实践:

  • 标识符只能包含字母、数字、下划线 (_) 和美元符号 ($)。

  • 标识符必须以字母、下划线或美元符号 ($) 开头。它们不能以数字开头。

  • 标识符区分大小写。例如,“myVariable”和“myvariable”是两个不同的标识符。

  • 标识符应该具有描述性和意义。

  • 标识符不应与保留关键字相同。这可能会导致代码中的语法错误。为避免这种情况,请使用清晰地指示标识符用途的描述性名称。

TypeScript 中常用的标识符包括变量、函数、类、接口和常量。

以下是一些 TypeScript 中有效标识符的示例:

const myVariable: string = "Hello world";
let myNumber: number = 42;

另一方面,以下是一些无效的标识符:

let 123invalid: string; // identifier cannot start with a digit
const my-variable: string = "Invalid"; // identifier cannot contain a hyphen
let class: string = "Invalid"; // 'class' is a keyword and cannot be used as an identifier 

关键字

以下是在使用 TypeScript 中的关键字时需要记住的一些规则和最佳实践:

  • 我们不应将保留关键字用作标识符。

  • 用户需要熟悉 TypeScript 中常用的关键字。

  • 如果必须在函数或类中使用保留关键字,可以使用尾部下划线 (_) 来将其与关键字区分开来。例如,class MyClass_ { }。

以下是一些 TypeScript 中常用的关键字:

  • let、const、var - 用于声明变量。

  • function - 用于声明函数。

  • class - 用于声明类。

  • if、else - 用于创建条件语句。

  • for、while、do - 用于创建循环。

  • interface - 用于声明接口。

  • implements - 用于实现接口。

  • enum - 用于声明枚举。

这是一个无效关键字的示例:

let let = "Invalid"; // 'let' is a keyword and cannot be used as an identifier 

示例(变量标识符)

在下面的示例中,我们包含了一个变量标识符。变量 languageName 存储语言的名称。

// Variable identifier
const languageName: string = "TypeScript";
console.log(`The name of the language is ${languageName}.` ); 

编译后,它将生成以下 JavaScript 代码:

// Variable identifier
var languageName = "TypeScript";
console.log("The name of the language is ".concat(languageName, ".")); 

示例(函数标识符)

在下面的示例中,我们包含了一个函数标识符。函数 greetPerson 接受一个 name 参数并输出问候语。

// Function identifier
function greetPerson(name: string): void {
   console.log( `Hello, ${name}!` );
}
greetPerson("Subhman"); 

编译后,它将生成以下 JavaScript 代码:

// Function identifier
function greetPerson(name) {
   console.log("Hello, ".concat(name, "!"));
}
greetPerson("Subhman"); 

示例(类标识符)

在下面的示例中,我们包含了一个类标识符。类 Animal 具有 name 属性和 speak 方法。

// Class identifier
class Animal {
   private name: string;

   constructor(name: string) {
      this.name = name;
   }
   public speak(): void {
      console.log(`${this.name} makes a sound.`);
   }
}

const dog = new Animal("Dog");
dog.speak(); 

编译后,它将生成以下 JavaScript 代码:

// Class identifier
var Animal = /** @class */ (function () {
   function Animal(name) {
      this.name = name;
   }
   Animal.prototype.speak = function () {
      console.log("".concat(this.name, " makes a sound."));
   };
   return Animal;
}());
var dog = new Animal("Dog");
dog.speak(); 

示例(接口标识符)

在下面的示例中,我们包含了一个接口标识符。接口 Shape 定义了一个 color 属性和一个返回数字的 area 方法。Rectangle 类实现 Shape 接口,并添加 width 和 height 属性以及计算矩形面积的 area 方法。

// Interface identifier
interface Shape {
   color: string;
   area() : number;
}

class Rectangle implements Shape {
   color: string;
   width: number;
   height: number;

   constructor(color: string, width: number, height: number) {
      this.color = color;
      this.width = width;
      this.height = height;
   }

   area(): number {
      return this.width * this.height;
   }
}
const rect = new Rectangle("red", 5, 10);
console.log(`The area of the ${rect.color} rectangle is ${rect.area()}.`);

编译后,它将生成以下 JavaScript 代码:

var Rectangle = /** @class */ (function () {
   function Rectangle(color, width, height) {
      this.color = color;
      this.width = width;
      this.height = height;
   }
   Rectangle.prototype.area = function () {
      return this.width * this.height;
   };
   return Rectangle;
}());
var rect = new Rectangle("red", 5, 10);
console.log("The area of the ".concat(rect.color, " rectangle is ").concat(rect.area(), "."));

示例(const、let、if、function 和 class 关键字)

在这个例子中,我们在 TypeScript 中使用了 const、let、if、function 和 class 关键字。这些都是具有特定含义和用途的内置关键字。

// TypeScript keyword example

// TypeScript keyword : 'const'
const pi: number = 3.14;

// TypeScript keyword : 'let'
let count: number = 0;

// TypeScript keyword : 'if'
if (count === 0) {
   console.log(" Count is zero ");
}

// TypeScript keyword : 'function'
function multiply(a: number, b: number): number {
   return a * b;
}

// TypeScript keyword : 'class'
class Person {
   private name: string;
   private age: number;
   constructor(name: string, age: number) {
      this.name = name;
      this.age = age;
   }
   public getAge(): number {
      return this.age;
   }
}
const john = new Person("John", 30);
console.log(john.getAge());

编译后,它将生成以下 JavaScript 代码:

// TypeScript keyword example

// TypeScript keyword : 'const'
var pi = 3.14;

// TypeScript keyword : 'let'
var count = 0;

// TypeScript keyword : 'if'
if (count === 0) {
   console.log(" Count is zero ");
}

// TypeScript keyword : 'function'
function multiply(a, b) {
   return a * b;
}

// TypeScript keyword : 'class'
var Person = /** @class */ (function () {
   function Person(name, age) {
      this.name = name;
      this.age = age;
   }
   Person.prototype.getAge = function () {
      return this.age;
   };
   return Person;
}());
var john = new Person("John", 30);
console.log(john.getAge()); 

在本教程中,我们探讨了 TypeScript 标识符和关键字的各个方面。我们了解到 TypeScript 有一些具有预定义含义的保留关键字,不能用作标识符。我们还看到了有效和无效标识符和关键字的示例,以及它们如何在 TypeScript 代码中使用。

第一个示例演示了使用变量、函数、类和接口标识符来定义语言结构。第二个示例展示了使用内置关键字在语言中执行不同操作。

了解标识符和关键字对于使用 TypeScript 至关重要,因为它使我们能够编写更易读且无错误的代码。通过遵循 TypeScript 的命名约定,我们可以编写更易于理解和维护的一致代码。

更新于:2023年3月7日

2K+ 次浏览

开启您的职业生涯

完成课程获得认证

开始学习
广告