Lo que estamos construyendo en 2020

Mar 10 2020
Nuestro plan para 2020 cubre tres áreas: Flow proporciona un servidor de idiomas para proporcionar funciones enriquecidas de edición y exploración de código, como diagnósticos en el editor (errores de tipo), autocompletar e "ir a la definición". Si bien nuestro enfoque es brindar la mejor experiencia de su clase en VS Code, cualquier editor que use LSP puede aprovechar el servidor de idiomas de Flow.
Foto de Aksonsat Uanthoeng en Pexels

Nuestro plan para 2020 cubre tres áreas:

  • Mejorar las capacidades y la capacidad de respuesta de nuestra experiencia de edición y navegación de VS Code
  • Haga que nuestro sistema de tipos sea más simple, expresivo y correcto
  • Reduzca nuestro uso máximo de memoria mientras mantiene la línea para volver a verificar el rendimiento

Flow proporciona un servidor de idiomas para proporcionar funciones enriquecidas de edición y exploración de código, como diagnósticos en el editor (errores de tipo), autocompletar y "ir a la definición". Si bien nuestro enfoque es brindar la mejor experiencia de su clase en VS Code, cualquier editor que use LSP puede aprovechar el servidor de idiomas de Flow.

En 2020 nos centraremos en dos tipos de inversiones en nuestra experiencia de edición y navegación. Primero, continuaremos mejorando la confiabilidad y la capacidad de respuesta de nuestras funciones IDE. En segundo lugar, agregaremos soporte para algunas de las funciones de IntelliSense más solicitadas.

El servidor de idiomas de Flow no siempre responde inmediatamente porque necesita inicializarse cuando se inicia por primera vez y, a veces, necesita reiniciarse después de eventos como grandes rebases. La mayoría de las funciones de idioma requieren que el servidor Flow se ejecute continuamente mientras edita el código. Siempre que sea posible, convertiremos nuestras solicitudes de edición y exploración para que se puedan completar sin necesidad del servidor. También continuaremos reduciendo las situaciones en las que el servidor de Flow necesita reiniciarse.

Un segundo conjunto de inversiones proviene de agregar soporte para las funciones de IntelliSense más solicitadas : información de parámetros, información rápida y soluciones rápidas.

  • La información de los parámetros incluye la ayuda de la firma (el número y los tipos de parámetros esperados) que se muestran a medida que escribe la llamada a la función. También mostraremos documentación sobre el parámetro extraído de los comentarios JSDoc en el código.
  • La información rápida muestra la declaración cuando pasa el cursor sobre un identificador en su código. Flow ya muestra firmas de funciones. Mejoraremos el formato para obtener información rápida y agregaremos comentarios de documentación similares a la información de parámetros.
  • Acabamos de agregar nuestra primera función de solución rápida: un "¿Quiso decir?" que sugiere correcciones a su código a medida que escribe. Por ejemplo, si escribe foo.baren un objeto fooque no tiene un campo nombrado barpero sí tiene un campo nombrado baz, la solución rápida aplicará esa sugerencia. También estamos investigando la adición de supresiones de errores de flujo y la generación automática de importdeclaraciones estáticas .

Creemos que un sistema de tipografía cuidadosamente diseñado que sea simple, expresivo y correcto puede brindar una mejor experiencia para los desarrolladores.

  • Simple: ¿pueden los desarrolladores predecir cómo se comportaría Flow en su código?
  • Expresivo: ¿pueden los desarrolladores hacer lo que necesitan sin ser bloqueados por Flow?
  • Correcto: ¿pueden los desarrolladores confiar en Flow para ayudarlos a evitar costosos errores comunes?
  • El uso de thisfunciones y métodos in a menudo conduce a un código no verificado, porque se puede escribir implícitamente como any. El uso anyno es seguro y evita que Flow informe errores. La implementación de escribir para thispermitirá a Flow verificar el código que usa this.
  • Los tipos de objetos no sellados se utilizan para modelar propiedades y literales de objetos vacíos en funciones. Los objetos no sellados permiten escribir nuevas propiedades en cualquier momento. Son útiles para escenarios como habilitar la inicialización de objetos en múltiples declaraciones. Pero Flow no comprueba las lecturas de los objetos no sellados sin escrituras coincidentes . Trabajaremos para solucionar este problema mediante un seguimiento cuidadoso de los patrones de inicialización comunes.
  • Muchos de los tipos de utilidades de Flow , como $ObjMapy $PropertyType, no reflejan la semántica de las correspondientes operaciones en tiempo de ejecución. Crearemos diseños de primera clase para esos tipos.
  • Las supresiones de errores de flujo son muy burdas. Agregar una $FlowFixMelínea de código anterior para suprimir un tipo de error en realidad suprime todos los errores introducidos por ese código, enmascarando potencialmente errores futuros. Estamos diseñando códigos de error que le permitirán suprimir errores específicos sin ocultar otro error en la misma línea de código. Y trasladaremos las supresiones a la posición principal de un error, evitando que una supresión adjunta a una definición oculte errores donde se use esa definición.
  • Los tipos y funciones genéricos actualmente tienen un comportamiento impredecible, con parámetros de tipo genérico capaces de escapar de su alcance y llamadas a funciones genéricas capaces de acumular nuevos límites lejos del sitio de la llamada. Estamos diseñando un nuevo comportamiento para genéricos, incluida una detección más confiable de errores en funciones genéricas, una prueba para evitar parámetros de tipo de escape y una verificación para garantizar que las llamadas a funciones estén correctamente restringidas.

El equipo de Flow entregó mejoras de rendimiento masivas el año pasado , como reducir nuestros tiempos de revisión en un 70%. Hemos escuchado comentarios positivos abrumadores de los desarrolladores de Facebook sobre nuestras mejoras de rendimiento. Nuestro objetivo es mantener la línea en el rendimiento, incluso a medida que crecen nuestras bases de código JavaScript. También estamos trabajando para reducir el uso de memoria del Flow en todas las situaciones.

Para concluir

En 2020, el equipo de Flow brindará una experiencia de desarrollador a la par con los estándares de confiabilidad, completitud de funciones y deleite de toda la industria. Como parte de esta experiencia de desarrollador, continuaremos mejorando los fundamentos: uso de memoria y confiabilidad. Proporcionaremos las funciones de edición y exploración de IDE más solicitadas. Y mejoraremos el sistema de tipos de Flow para que sea más fácil para los desarrolladores escribir código correcto y seguro.

Nos mantendremos en contacto contigo en este blog, en GitHub y en nuestro canal Flowtype Discord .