打字稿意外令牌

Typescript unexpected token

我应该根据工作的日程安排和个人可用性来筛选工作。

const jobs: JobRecord[] = [
  {
    "storeName": "Highwire Coffee Company",
    "schedule":  [
      "Tuesday",
      "Thursday",
    ],
        ...
  },
  {
    "storeName": "Blue Bottle Coffee",
    "rid": "recNgeUMcYhWUxw8b",
    "schedule":  [
      "Thursday",
    ],
    ...
  },
] 

const availability: Availability = {
  "friday": false,
  "monday": false,
  "thursday": true,
  "tuesday": false,
  "wednesday": true,
}

例如,根据上面的这些输入,我应该创建一个仅返回商店名称为“Blue Bottle Coffee”的作业的函数。

为此,我编写了这两个函数,但显然,我的函数 findAvailableDays returns 出现意外标记错误。

  filterJobs = (jobs: JobRecord[], availability: Availability): void => {
    // Step 0: Clone the jobs input
    const newJobs: JobRecord[] = cloneDeep(jobs);
    console.log(newJobs, availability);

    // Step 1: Remove jobs where the schedule doesn't align with the users' availability.
    for (const[store, schedule] of Object.entries(jobs)){
      var availDays: string[];
      availDays = findAvailableDays(availability);
      let checker = (availDays, schedule) => schedule.every(v => availDays.includes(v))
      if(!checker(availDays, schedule)){
        delete newJobs[store];
      }
    }
    // Step 2: Save into state
    this.setState({ jobs: newJobs });
  };

  function findAvailableDays (availability: Availability){
    var availDays: string[];
    availDays = [];
    for  (const [day, avail] of Object.entries(availability)){
      if (avail){
        availDays.push(day);
      }
    }
    return availDays;
  };

我哪里错了missing/doing?

根据对问题本身的评论,您收到此错误是因为您混淆了在 Typescript 中编写函数的两种方法。

编写函数的一种方法是编写function doSomething() { ... }。您只能在范围内执行此操作,该范围允许声明 new things 。例如,新文件中的空白 space 是该模块的 top-most 范围,但每次输入新函数甚至输入控制块时也会创建一个范围 if。一旦你像这样声明了一个函数,你就可以通过简单地说 doSomething() 来调用它,只要你仍然可以在声明函数的范围内“看到”。

另一种方法是在 class 上声明一个 方法 。您在通过编写 doSomething() { ... }(没有 function)来定义 class 时执行此操作。如果您在 class 中,则必须使用 this.doSomething() 在 class 的特定实例上访问像这样的普通实例方法,如果您引用特定的实例,则必须使用 bob.doSomething() class 名为 bob 的实例。

在这种情况下,您将 findAvailableDays 声明为作用域函数,但在 space 中编译器需要 class 方法。您可以通过删除 function 然后必须调用 this.findAvailableDays(...) 或将您的函数声明移出 class 并移至文件的顶部范围(您在这种情况下可以这样做,因为它不会从 class).

内部读取任何其他内容