意外的标记。TS [已修复] 中的构造函数、方法错误

意外的标记。TS中的构造函数,方法错误

Unexpected token. A constructor, method Error in TS

“Unexpected token. A constructor, method, accessor, or property was expected”错误发生在我们使用varlet关键字声明类属性或function类中的关键字时。

要解决该错误,请从您的类中删除var,letfunction关键字。

以下是错误发生方式的 2 个示例。

索引.ts
class A { // ⛔️ Error (using var, let) var a: number = 100; let b: string = 'hello'; // ⛔️ Error: Unexpected token. A constructor, // method, accessor, or property was expected.ts(1068) function myFunction() { } }

我们使用varlet关键字为类分配属性,使用
function关键字声明类方法。

要解决此问题,请从您的班级中删除var,letfunction关键字。

索引.ts
class A { a = 100; b = 'bobbyhadz.com'; myFunction() { console.log(this.a); } } const myInstance = new A(); console.log(myInstance.a); // 👉️ 100 console.log(myInstance.b); // 👉️ "bobbyhadz.com" myInstance.myFunction(); // 👉️ 100

该类具有
属性 –
一个名为 的方法2abmyFunction

通过构造方法获取参数

在创建类实例时,您经常需要使用参数。您可以通过构造函数方法来做到这一点。

索引.ts
class A { constructor(public a: number, public b: string) { this.a = a; this.b = b; } myFunction() { console.log(this.a); } } const myInstance = new A(42, 'bobbyhadz.com'); console.log(myInstance.a); // 👉️ 42 console.log(myInstance.b); // 👉️ "bobbyhadz.com"

请注意,我们在构造方法中分配了ab属性,并且我们没有在类中的任何地方使用var,let或关键字。function

示例中的类是以下类的更简洁版本。

索引.ts
class A { a: number; b: string; constructor(a: number, b: string) { this.a = a; this.b = b; } myFunction() { console.log(this.a); } } const myInstance = new A(42, 'bobbyhadz.com'); console.log(myInstance.a); // 👉️ 42 console.log(myInstance.b); // 👉️ "bobbyhadz.com"

我们必须键入两次ab类属性才能获得相同的结果。

前面在构造函数中显式使用关键字的示例public使用更广泛。

构造函数参数使用默认值

您还可以为构造函数参数使用默认值。

索引.ts
class A { constructor(public a = 100, public b = 'bobbyhadz.com') { this.a = a; this.b = b; } myFunction() { console.log(this.a); } } const myInstance = new A(); console.log(myInstance.a); // 👉️ 100 console.log(myInstance.b); // 👉️ "bobbyhadz.com"

我们创建了一个类的实例,没有将任何参数传递给构造函数,因此ab属性被设置为默认值。

对类方法使用箭头函数

您还可以将箭头函数用于类方法。

索引.ts
class A { constructor(public a = 100, public b = 'bobbyhadz.com') { this.a = a; this.b = b; } myFunction = () => { console.log(this.a); }; } const myInstance = new A(); console.log(myInstance.a); // 👉️ 100 console.log(myInstance.b); // 👉️ "bobbyhadz.com" myInstance.myFunction(); // 👉️ 100

请注意,我们没有在方法定义中使用const,let或关键字。var

额外资源

您可以通过查看以下教程来了解有关相关主题的更多信息: