typescript3.0 - Hvordan bruke yield i Typescript-klasser


Jeg er nybegynner i Typescript, og mens jeg lærte fra nettstedet, fikk jeg vite at yield kan brukes for asynkron iterasjon ved å bruke for-await-of. Nedenfor er funksjonen i Javascript. Vennligst hjelp meg med hvordan jeg kan bruke den i Typescript-klasser. Når jeg skriver koden nedenfor, får jeg feilen TS1163: Et 'yield'-uttrykk er bare tillatt i en generator-body. Jeg vil skrive koden nedenfor i en Typescript-klasse.

https://blog.bitsrc.io/keep-your-promises-in-typescript-using-async-await-7bdc57041308.

function* numbers() {
  let index = 1;
  while(true) {
    yield index;
    index = index + 1;
    if (index > 10) {
      break;
    }
  }
}

function gilad() {
  for (const num of numbers()) {
    console.log(num);
  }
}
gilad();

Jeg prøvde også å skrive i en Typescript-klasse, men det gir en kompilasjonsfeil.

public getValues(): number {
        let index = 1;
        while(true) {
            yield index;
            index = index + 1;
            if (index > 10) {
                break;
            }
        }
    }

Svar #1

Du må sette tokenet * foran metoden din:

class X {
  public *getValues() { // you can put the return type Generator<number>, but it is ot necessary as ts will infer 
        let index = 1;
        while(true) {
            yield index;
            index = index + 1;
            if (index > 10) {
                break;
            }
        }
    }
}

Lekeromlenke

Relaterte artikler