一个元素访问表达式应该在 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
,并将其初始化为空数组
来解决错误。
# 额外资源
您可以通过查看以下教程来了解有关相关主题的更多信息: