Typescript Loop с задержкой

Я пытаюсь создать метроном с Typescript.

У меня есть этот код JavaScript:

(function theLoop (i) {
        setTimeout(function () {
            metronome.play();
            if (--i) {
                theLoop(i);
            }
        }, 3000);          // interval set to 3000
    })(10);                // play it 10 times

И я хотел преобразовать его в код Typescript. К сожалению, я не знаю, как это сделать (особенно в отношении последней строки => })(10);

Может кто-то помочь мне с этим?

2 ответа

Решение

Как все говорили, typescipt - это расширенный набор javascript, поэтому ваш код является допустимым машинописным шрифтом, но вот как это сделать с помощью функции со стрелкой (которая также es6 javascript) и типы:

(function theLoop (i: number) {
        setTimeout(() => {
            metronome.play();
            if (--i) {
                theLoop(i);
            }
        }, 3000);
    })(10);

( код на детской площадке)

И вот еще один вариант:

let theLoop: (i: number) => void = (i: number) => {
    setTimeout(() => {
        metronome.play();
        if (--i) {
            theLoop(i);
        }
    }, 3000);
};

theLoop(10);

( код на детской площадке)


редактировать

Используя второй вариант, который я вам дал, изменить задержку очень просто:

let theLoop: (i: number, delay?) => void = (i: number, delay = 3000) => {
    if (i % 2 === 0) {
        delay = 1500;
    }

    setTimeout(() => {
        metronome.play();
        if (--i) {
            theLoop(i);
        }
    }, delay);
};

theLoop(10);

( код на детской площадке)

Typescript верхний набор Javascript, Таким образом, вы можете скопировать свой код в Typescript и это будет работать

Другие вопросы по тегам