元素访问表达式应该在 TS 中带参数

一个元素访问表达式应该在 TS 中接受一个参数

An element access expression should take an argument in TS

当我们尝试分配一个需要值的类型时,会出现错误“元素访问表达式应该带一个参数”。

要解决该错误,请确保用冒号分隔类型赋值,用等号分隔值赋值。

元素访问表达式应该带参数

下面是错误如何发生的示例。

索引.ts
class Employee { // ⛔️ Parsing error: An element access expression should take an argument tasks = string[]; }

为类属性分配类型时,我们需要在属性名称和类型之间使用冒号,而不是等号。

索引.ts
class Employee { tasks: string[] = []; }

现在该tasks属性的类型为string[]并且被初始化为一个空数组。

确保你没有在带有.js扩展名的文件中编写 Typescript

当我们尝试在具有 a 或其他扩展名的文件中编写 TypeScript 时.js,尤其是在 React.js 应用程序中,也会发生该错误。

确保您的文件具有.ts.tsx扩展名。

使用构造函数初始化一个属性

如果希望在实例化类时将其作为参数,也可以使用构造函数来初始化属性。

索引.ts
class Employee { constructor(public tasks: string[] = []) { this.tasks = tasks; } } const emp = new Employee(['develop', 'test']); console.log(emp.tasks); // 👉️ ['develop', 'test'] emp.tasks.push('ship'); console.log(emp.tasks); // 👉️ ['develop', 'test', 'ship']

错误发生的另一个例子

这是错误如何发生的另一个示例。

索引.ts
class Developer { language = 'TypeScript'; } class Employee { // ⛔️ Parsing error: An element access expression should take an argument developers = Developer[]; }

错误是因为我们将Developer类型分配为值而引起的。

为了解决这个错误,我们必须用冒号分隔类型和属性名称。

索引.ts
class Developer { language = 'TypeScript'; } class Employee { developers: Developer[] = []; } const emp = new Employee(); emp.developers.push(new Developer()); console.log(emp.developers); // 👉️ [Developer {language: 'TypeScript'}]

我们将developers属性类型化为类型数组Developer,并将其初始化为空数组
来解决错误。

# 额外资源

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