如何在Angular中将此JS代码转换为现代TypeScript?

时间:2018-12-26 09:40:43

标签: angular typescript angular6

我正在尝试将此JS代码转换为现代的TypeScript,以便在Angular 6中使用。

function run(interval, frames) {
    var int = 1;

    function func() {
        document.body.id = "b"+int;
        int++;
        if(int === frames) { int = 1; }
    }

    var swap = window.setInterval(func, interval);
}

run(1000, 10); //millisec

我做了一些改进,但仍无法按预期工作。如何将其完全转换为TypeScript以完美地使用Angular?

2 个答案:

答案 0 :(得分:0)

因为TypeScript是JavaScript的超集。每个普通的JavaScript都是完全有效的TypeScript。

话虽如此,这是您可以引入强类型和现代ES6语法的方法:

function run(interval: number, frames: number) {
  let int: any = 1;

  function func() {
    document.body.id = "b" + int;
    int++;
    if (int === frames) {
      int = 1;
    }
  }

  const swap = window.setInterval(func, interval);
}

run(1000, 10); //millisec

注意::我刚刚将类型添加到了run函数的参数中。我还将int的类型设置为any,然后将其添加到字符串中,然后再对其进行递增。您可以通过将其粘贴到TypeScript Playground中来检查其是否有效。它应该给您任何错误。

答案 1 :(得分:0)

我在这里扩展了SiddAjmera的答案。我已经用匿名箭头函数替换了func()中的run函数。我已经删除了any类型(您永远不要使用)。

我已将代码放在Angular组件中。

class TestAngular {

  int:number
  swap:number

  run(interval: number, frames: number) {

    this.int = 1

    this.swap = window.setInterval(()=>{
        console.log(this.int)
        this.int++
        if (this.int == frames) {
           this.int = 1
        }
    }, interval)

}


let s = new TestAngular()
s.run(500,10)