Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

78
Vistas
¿Cómo hago para que Pylance ignore la posibilidad de Ninguno?

Me encanta la verificación de tipo Pylance.

Sin embargo, si tengo una variable var: Union[None, T] , donde T implementa foo , pylance arrojará un error en:

var.foo() ya que el tipo None no implementa foo .

Hay alguna manera de resolver esto? Una forma de decirle a Pylance "Esta variable es None a veces, pero en este caso estoy 100% seguro de que se asignará

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Hay muchas formas de obligar a un verificador de tipos a aceptar esto.



  1. Usar assert :

     from typing import Union def do_something(var: Union[T, None]): assert var is not None var.foo()

  2. Levanta alguna otra excepción :

     from typing import Union def do_something(var: Union[T, None]): if var is None: raise RuntimeError("NO") var.foo()

  3. Use una declaración if :

     from typing import Union def do_something(var: Union[T, None]): if var is not None: var.foo()

  4. Use typing.cast , una función que no hace nada en tiempo de ejecución pero obliga a un verificador de tipos a aceptar que una variable es de cierto tipo:

     from typing import Union, cast def do_something(var: Union[T, None]): var = cast(T, var) var.foo()

  5. Apague el verificador de tipos para esa línea :

     from typing import Union def do_something(var: Union[T, None]): var.foo() # type: ignore


Tenga en cuenta también que, si bien no hace ninguna diferencia en la forma en que un verificador de tipo interpreta su anotación de tipo (los dos son semánticamente idénticos), también puede escribir escribiendo typing.Union[T, None] como typing.Optional[T] , que podría decirse que es una sintaxis un poco más agradable. En Python> = 3.10 (o anterior si tiene from __future__ import annotations en la parte superior de su código), incluso puede escribir tipos de Union con el | operador, es decir, T | None

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda