Если у меня есть такое утверждение:

public startDate = this.formatDate(new Date());

Я хотел бы вместо передачи new Date () передать дату, созданную функцией. Я знаю, что могу:

public startDate = this.formatDate(this.getDateFunc());

Но есть ли способ сделать это с помощью лямбда-функции? Я попытался найти его, но все сообщения, которые я нашел, говорили о функции как о параметре в определении.

Я хочу сделать что-то вроде:

public startDate = this.formatDate(() => {...});

0
rustytoaster21 14 Сен 2020 в 21:04

3 ответа

Лучший ответ

Предполагая, из вашего примера, что вам нужен анонимный вызов функции. Если да, то это можно сделать с помощью IIFE:

public startDate = this.formatDate(
    (() => {
        // do some other stuff
        return new Date(/* ...args */)
    })()
)

Однако для удобства чтения обычно лучше назвать функцию.

0
Lionel Rowe 14 Сен 2020 в 18:08
class A {
  public startDate = this.dateFactory();

  constructor(
    private dateFactory,
  ) {}

  ...
}
// somewhere in code
new A(() => new Date());
0
Xesenix 14 Сен 2020 в 18:07

type GetDate = () => Date

const formatDate = (getDate: GetDate) => {
 const date = getDate()
 // formate date
 
}

// usage
const getDateFromInternet = () => API.getDate() // imaginary API which fetches date

const formattedDate = formatDate(getDateFromInternet)
0
Pritam Kadam 14 Сен 2020 в 18:09