Obține numele variabilei de argument al funcției TypeScript

0

Problema

Aș dori să înființeze un mod rapid si usor pentru a testa funcțiile în Unghiulare unde mi-ar doar de intrare numele de funcții o dată în constructorul și să le testeze. de exemplu:

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

Problema cu acest lucru este că, dacă am încerca să treacă o funcție ca un argument fără a sunat-o, am primit-o acest lucru. domeniul de aplicare de eroare. Cum pot obține atât numele funcției și valoarea de returnare atunci când am trece în test() funcție, fără a fi nevoie să introduceți două argumente?

Există o opțiune mai bună, poate că unii unitate de testare cadrele oferi acest lucru?

Abordarea mea actuală funcționează, dar este greoaie și aș dori pentru a elimina nevoia pentru cel de-al doilea argument:

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

Cel mai bun răspuns

1

Modul cel mai sigur ar fi să treacă în șir, apoi utilizați notație suport să-l caute pe this. Utilizați un câmp de clasă săgeată funcția deci this contextul este corectă.

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

Puteți scrie ceva de genul de mai jos (extinderea răspunsul de @CertainPerformance)

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

În alte limbi

Această pagină este în alte limbi

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