Метод перегрузки выдает повторяющуюся ошибку в Typescript - PullRequest
1 голос
/ 06 ноября 2019

У меня есть следующий фрагмент кода:

public async insert(data: iFlower | iFlower[]): Promise<iFlower> | Promise<iFlower[]> {
 await this.insert(data);
}

private async insert(data: iFlower): Promise<iFlower>{
 ....
 return data;
}

private async insert(data: iFlower[]): Promise<iFlower[]> {
 ....
 return data;
}

iFlower is:

export interface iFlower {
   color: string;
   number: string;
}

Я получаю следующие ошибки: The return type of an async function or method must be the global Promise<T> type. Duplicate function implementation. 'insert' is declared but its value is never read.

Это потому, что iFlower - это интерфейс?

1 Ответ

1 голос
/ 06 ноября 2019

Когда вы выполняете перегрузку в машинописном тексте, единственное, что вы предоставляете, - это типы. Фактическая реализация - это всего лишь одна функция. Итак, вы сделаете серию типов для функции, а затем одну реализацию, которая совместима со всеми этими типами, например:

private async insert(data: iFlower): Promise<iFlower>;
private async insert(data: iFlower[]): Promise<iFlower[]>;
private async insert(data: iFower | iFlower[]): Promise<iFlower> | Promise<iFlower[]> {
  // Your code here. Maybe something like:
  if (Array.isArray(data)) {
    ... 
    return data;
  } else {
    ... 
    return data;
  }
}
...