TypeScript: qué tipo es setInterval

3 minutos de lectura

avatar de usuario de gfels
gfels

Si me gustaría asignar un tipo a una variable a la que luego se le asignará un setInterval así:

this.autoSaveInterval = setInterval(function(){
      if(this.car.id){
        this.save();
      }
      else{
        this.create();
      }
    }.bind(this), 50000);

¿Qué tipo debe asignarse a esta variable.autosaveInterval?

  • intervalo de guardado automático público: número;

    – Arash

    17 de julio de 2018 a las 8:28

  • No necesita especificar un tipo; autoSaveInterval inferirá su tipo a partir del valor de retorno de la setInterval llamar. En plataformas de navegador esto es numberpero en node.js es un temporizador

    – Pastillas de explosión

    17 de julio de 2018 a las 8:33

  • Problema de github relacionado: github.com/microsoft/TypeScript/issues/842

    – V. Rubinetti

    24 de febrero a las 1:53

  • ¿Qué significa Fe?

    – Teófilo

    el dia de ayer

Tarde a la fiesta, pero el mejor tipo (sobre todo porque el tipo es opaco, solo nos importa que podamos pasárselo a clearInterval() más tarde) podría ser el deducido automáticamente, es decir. algo como:

ReturnType<typeof setInterval>

  • Hombre, esto definitivamente debería haber sido elegido como la respuesta correcta. “número” no funciona, especialmente en angular

    – Akin_Glen

    19 de mayo de 2020 a las 5:17

  • Me uno a la fiesta, el numero tampoco me funciono, gracias!!

    – Itay

    1 de septiembre de 2020 a las 8:42

  • La forma más limpia de resolver el problema y funciona en todos los entornos.

    – Christophe Marois

    15/01/2021 a las 17:00

  • Wow, no sabía sobre ReturnType. ¡Eso es enorme!

    – ICW

    9 de agosto de 2021 a las 19:07

El tipo depende de la función que vaya a usar, hay 2 sobrecargas, el tipo de retorno está marcado en un cuadro delimitador rojo:

ingrese la descripción de la imagen aquí

Para usar el que devuelve el número, use:

window.setInterval(...)

  • ¿Podría compartir el sitio web o el libro que obtuvo esta referencia? Gracias.

    – Río Crepúsculo

    31 de enero de 2021 a las 13:53

  • Hola, este no es un libro, puede encontrarlo si trabaja con Visual Studio y busca la implementación.

    – Stav Bodik

    31 de enero de 2021 a las 15:39

avatar de usuario de user3003238
usuario3003238

El tipo es número;

private autoSaveInterval: number = setInterval(() => {
  console.log('123');
}, 5000);

  • @gfels Porque setInterval devuelve lo que representa el valor de ID del temporizador que está configurado. Puede usar este valor con el método clearInterval() para cancelar el temporizador. No es una función porque no le está asignando el controlador de función, le está asignando el resultado/valor de retorno de una función.

    – usuario3003238

    17 de julio de 2018 a las 8:39


  • Si está usando TypeScript y obtiene errores del compilador porque de alguna manera se infiere el tipo NodeJS.Timer: cambie a window.setInterval para especificar que no está usando el nodo y se debe usar el tipo DOM, que de hecho es un número.

    – Michael Trow

    22 de junio de 2021 a las 13:37

  • No es número en node.js

    – Jason Zhou

    5 de julio de 2021 a las 5:17

Avatar de usuario de AngularBoy
chico angular

Creo que su NodeJS.Timeout y Widow.setInterval es el número:

const nodeInterval: NodeJS.Timeout = setInterval(() => {
  // do something
}, 1000);

const windowInterval: number = window.setInterval(() => {
  // do something
}, 1000);

Avatar de usuario de Ash
Ceniza

Use el operador typeof para encontrar el tipo de datos de cualquier variable como esta:

typeof es un operador unario que se coloca antes de un solo operando que puede ser de cualquier tipo. Su valor es una cadena que especifica el tipo de operando.

var variable1 = "Hello";
var autoSaveInterval;

this.autoSaveInterval = setInterval(function(){
      if(this.car.id){
        this.save();
      }
      else{
        this.create();
      }
    }.bind(this), 50000);
    
console.log("1st: " + typeof(variable1))
console.log("2nd: " + typeof(autoSaveInterval ))

  • Esto no está ayudando con las definiciones de TypeScript

    – Romainpetit

    22 de junio de 2021 a las 13:25

  • Esto no contiene ninguna referencia a la pregunta original con respecto a los tipos de TypeScript

    – Kendall

    9 de febrero a las 1:39

  • Esto no está ayudando con las definiciones de TypeScript

    – Romainpetit

    22 de junio de 2021 a las 13:25

  • Esto no contiene ninguna referencia a la pregunta original con respecto a los tipos de TypeScript

    – Kendall

    9 de febrero a las 1:39

¿Ha sido útil esta solución?