TypeScript 中 A class member cannot have the 'const' keyword 错误
当我们使用 const
关键字在类中声明属性时,会出现“A class member cannot have the 'const' keyword”的错误。 要解决该错误,请删除 const
关键字并使用 readonly
修饰符来指示不应更改类属性。
下面是发生上述错误的示例
class Employee {
// ⛔️ A class member cannot have the 'const' keyword.ts(1248)
const name = 'James';
}
声明类属性时不能使用 const
关键字。 相反,请使用 readonly
修饰符。
class Employee {
readonly name = 'James';
readonly age = 24;
logName() {
console.log(this.name);
}
}
const emp = new Employee();
emp.logName(); // 👉️ "James"
console.log(emp.name); // 👉️ "James"
我们使用 readonly
修饰符来防止在构造函数之外对类属性进行赋值。
使用这种方法时,我们仍然可以在构造函数中更改属性的值。
class Employee {
readonly name: string = 'James';
readonly age: number = 24;
constructor() {
this.name = 'Freddy';
this.age = 29;
}
logName() {
console.log(this.name);
}
}
const emp = new Employee();
console.log(emp.name); // 👉️ "Freddy"
在构造函数之外赋值会导致类型检查器发出错误。
class Employee {
readonly name: string = 'James';
readonly age: number = 24;
constructor() {
this.name = 'Freddy';
this.age = 29;
}
logName() {
console.log(this.name);
// ⛔️ Cannot assign to 'name' because it
// is a read-only property.ts(2540)
this.name = 'Jiyik';
}
}
如果我们不希望能够更改构造函数中的值,则可以将 static
关键字与 readonly
一起使用。
export class Employee {
// 👇️ public if you need to access from outside the class
public static readonly department = 'Accounting';
// 👇️ private if you need to access only from inside this class
private static readonly salary = 100;
// 👇️ protected if you need to access only from this class
// and its subclasses
protected static readonly age = 30;
logSalary() {
console.log(Employee.salary);
console.log(Employee.age);
}
}
// 👇️ Access on class (NOT on instances)
console.log(Employee.department);
使用
static
关键字时,我们定义了静态方法或属性。 静态方法和属性不能在类的实例上访问,它们只能在类本身上访问。
示例中的 department
属性被声明为 public
。 声明为公共的属性可以在任何地方访问。
当我们需要从类外部访问特定属性时,我们应该使用
public
。
私有可见性只允许从类内部访问。
标记为受保护的成员仅对类本身及其子类可见。
确保我们正在访问类的静态属性和方法,例如 Employee.myProperty
,而不是类的实例。
如果大家不喜欢本文介绍的任何方法,那可以在类外部声明一个常量并在类中使用它。
const name = 'Frank';
export class Employee {
logName() {
console.log(name);
}
}
const employee = new Employee();
employee.logName(); // 👉️ "Frank"
总结
当我们使用 const
关键字在类中声明属性时,会出现“A class member cannot have the 'const' keyword”的错误。 要解决该错误,请删除 const
关键字并使用 readonly
修饰符来指示不应更改类属性。
相关文章
在 AngularJs 中设置 Select From Typescript 的默认选项值
发布时间:2023/04/14 浏览次数:78 分类:Angular
-
本教程提供了在 AngularJs 中从 TypeScript 中设置 HTML 标记选择的默认选项的解释性解决方案。
在 Angular 中使用 TypeScript 的 getElementById 替换
发布时间:2023/04/14 浏览次数:153 分类:Angular
-
本教程指南提供了有关使用 TypeScript 在 Angular 中替换 document.getElementById 的简要说明。这也提供了在 Angular 中 getElementById 的最佳方法。
在 TypeScript 中使用 try..catch..finally 处理异常
发布时间:2023/03/19 浏览次数:181 分类:TypeScript
-
本文详细介绍了如何在 TypeScript 中使用 try..catch..finally 进行异常处理,并附有示例。
在 TypeScript 中使用 declare 关键字
发布时间:2023/03/19 浏览次数:97 分类:TypeScript
-
本教程指南通过特定的实现和编码示例深入了解了 TypeScript 中 declare 关键字的用途。
在 TypeScript 中 get 和 set
发布时间:2023/03/19 浏览次数:172 分类:TypeScript
-
本篇文章演示了类的 get 和 set 属性以及如何在 TypeScript 中实现它。
在 TypeScript 中格式化日期和时间
发布时间:2023/03/19 浏览次数:161 分类:TypeScript
-
本教程介绍内置对象 Date() 并讨论在 Typescript 中获取、设置和格式化日期和时间的各种方法。
在 TypeScript 中返回一个 Promise
发布时间:2023/03/19 浏览次数:182 分类:TypeScript
-
本教程讨论如何在 TypeScript 中返回正确的 Promise。这将提供 TypeScript 中 Returns Promise 的完整编码示例,并完整演示每个步骤。
在 TypeScript 中定义函数回调的类型
发布时间:2023/03/19 浏览次数:221 分类:TypeScript
-
本教程说明了在 TypeScript 中为函数回调定义类型的解决方案。为了程序员的方便和方便,实施了不同的编码实践指南。
在 TypeScript 中把 JSON 对象转换为一个类
发布时间:2023/03/19 浏览次数:110 分类:TypeScript
-
本教程演示了如何将 JSON 对象转换为 TypeScript 中的类。