意外的标记。TS中的构造函数,方法错误
Unexpected token. A constructor, method Error in TS
“Unexpected token. A constructor, method, accessor, or property was expected”错误发生在我们使用var
或let
关键字声明类属性或function
类中的关键字时。
要解决该错误,请从您的类中删除var
,let
和function
关键字。
以下是错误发生方式的 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() { } }
我们使用var
和let
关键字为类分配属性,使用
function
关键字声明类方法。
要解决此问题,请从您的班级中删除var
,let
和function
关键字。
索引.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
该类具有
属性 –和一个名为 的方法。2
a
b
myFunction
通过构造方法获取参数
在创建类实例时,您经常需要使用参数。您可以通过构造函数方法来做到这一点。
索引.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"
请注意,我们在构造方法中分配了a
和b
属性,并且我们没有在类中的任何地方使用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"
我们必须键入两次a
和b
类属性才能获得相同的结果。
前面在构造函数中显式使用关键字的示例
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"
我们创建了一个类的实例,没有将任何参数传递给构造函数,因此a
和b
属性被设置为默认值。
对类方法使用箭头函数
您还可以将箭头函数用于类方法。
索引.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
额外资源
您可以通过查看以下教程来了解有关相关主题的更多信息: