İşlev TypeScript argümanının değişken adını alın

0

Soru

İşlevleri Açısal olarak test etmenin hızlı ve kolay bir yolunu kurmak istiyorum, burada işlevlerin adını yapıcıya bir kez girip test edeceğim. örneğin:

constructor() {
    this.test(this.FucntionName)  <= logs function name and output
  }

Sorunun bu olduğunu eğer ben denemek için bir geçiş işlevi gibi bir gerekçe olmadan arama, Ben bir bu. kapsam hatası. İki argüman yazmak zorunda kalmadan test() işlevine geçirdiğimde hem işlevin adını hem de dönüş değerini nasıl alabilirim?

Daha iyi bir seçenek var mı, belki bazı birim test çerçeveleri bunu sağlıyor mu?

Şu anki yaklaşımım işe yarıyor, ancak aksak ve ikinci argümana olan ihtiyacı ortadan kaldırmak istiyorum:

export class AuthService {
  constructor(
    ...
  ) {
    this.test(this.FunctionName(), 'FunctionName')// I would like to remove the need to repeat the name as string
  }

  test(sub: any, name) {
    sub.subscribe(
      data => {
        console.group("==========", name, "()    TEST  ===============")
        console.log("Output Type:", typeof data)
        typeof data == 'object' ? console.table(data) : console.log(data);
        console.groupEnd()
      }
    )
  }
angular typescript
2021-11-24 01:30:50
2

En iyi cevabı

1

En güvenilir yol, dizeyi geçmek ve daha sonra onu aramak için parantez gösterimini kullanmak olacaktır this. Bir sınıf alanı ok işlevini kullanın, böylece this bağlam doğru.

test = (methodName) {
    this[methodName]().subscribe(
        data => {
            console.group("==========", methodName, "()    TEST  ===============")
            // ...
2021-11-24 01:35:55
0

Aşağıdaki gibi bir şey yazabilirsiniz (@CertainPerformance yanıtını genişletme)

export class AuthService {
  constructor(
    ...
  ) {
    this.test('FunctionName')
  }

  test(name) {
    this[name]().subscribe(
      data => {
        console.group("==========", name, "()    TEST  ===============")
        console.log("Output Type:", typeof data)
        typeof data == 'object' ? console.table(data) : console.log(data);
        console.groupEnd()
      }
    )
  }
2021-11-25 08:11:59

Diğer dillerde

Bu sayfa diğer dillerde

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................