Lanzamiento de TypeScript 5.1, nuevas actualizaciones de funciones

1: El tipo de retorno aumenta indefinido

type fun = () => undefined;

Aquí se establece un alias fun, al usarlo debemos devolverlo explícitamente undefined.

const f: fun = () => {
    
    
  return undefined;
};
f();

Ahora puede establecer el tipo de devolución directamente:

const f: fun = ():undefined => {
    
    
};
f();

Y no limitado a void any.

Versión 4.3 : ❌
Versión 5.1 : ✅

inserte la descripción de la imagen aquí

2: El getter puede establecer el tipo no relacionado del setter

const point = {
    
    
    get value(): number {
    
    
        return 0;
    },
    set value(value: string) {
    
    
    }
};
point.value = '888'; 
console.log(point.value); 

En la versión anterior , el tipo de retorno de get debería ser un subtipo de set, de la siguiente manera:

const point = {
    
    
    get value(): number {
    
    
        ......
    },
    set value(value: string|number) {
    
    
    }
};

En la nueva versión 5.1, esta restricción se relaja.

Versión 4.3 : ❌
Versión 5.1 : ✅

inserte la descripción de la imagen aquí
Sin embargo, debe establecer anotaciones, de lo contrario, puede expresar interpretaciones incorrectas a otros.

3: soporte asíncrono para elementos JSX y etiquetas JSX

Echemos un vistazo a la definición parcial de React de los tipos JSX:

namespace JSX {
    
    
        // 用于普通的HTML元素
        interface IntrinsicElements {
    
    
            // 为每一个HTML元素提供了对应的属性
            // ...
            // 其他HTML元素
        }

        // 用于React组件
        interface Element extends React.ReactElement<any, any> {
    
     }
        interface ElementClass extends React.Component<any> {
    
    
            render(): React.ReactNode;
        }
        interface ElementAttributesProperty {
    
     props: {
    
    }; }
        interface ElementChildrenAttribute {
    
     children?: {
    
    }; }
        // ...
}

Typescript siempre usa JSX.Element para determinar el tipo de JSX, y las versiones futuras de React pueden proporcionar soporte limitado para los componentes que devuelven Promises.

Entonces, para resolver este problema, TypeScript 5.1 agrega un nuevo atributo ElementType ✅ para que los usuarios especifiquen el tipo específico de componente asíncrono devuelto.

Si no lo entiendes muy bien, puedes considerarlo como una especie de acuerdo: "Para adaptarnos a ti, crearemos un nuevo acuerdo juntos".

"Es bueno que me sienta solo, tal vez debería recibir un abrazo"

4: Admite el nombre del atributo del espacio de nombres JSX

Al usar JSX, ts admite los siguientes métodos de escritura:a:b

// ✅
<Foo a:b="hello" />

5: typeRoots se actualiza en el módulo

El propósito principal de typeRoots es decirle al compilador de TypeScript en qué directorios buscar archivos de definición de tipos (archivos .d.ts).

De forma predeterminada, busca archivos .d.ts en el directorio node_modules/@types .

como:

{
    
    
  "compilerOptions": {
    
    
    "typeRoots": ["node_modules/@types"],
    ...
  }
}

Versión 4.3 : ❌

  1. solo se puede resolver en un directorio

Versión 5.1 : ✅

  1. Se puede analizar como un directorio o un archivo (si la explicación aquí es incorrecta, hágamelo saber y corríjala, gracias)

->Para obtener más detalles, consulte aquí<-

6: Cursor de enlace para etiquetas JSX

La función de actualización aquí es principalmente paravscodede. Otras herramientas también deberían incluir esta funcionalidad.

inserte la descripción de la imagen aquí

  1. Utilice las teclas de método abreviado Ctrl+, (ctrl más coma)
  2. Ingresar Edición Vinculada
  3. Busque la opción "Editor: Edición vinculada" y márquela

7: finalización del segmento de código para las etiquetas @param JSDoc

8: Sección de Optimización/Cambios Principales

  1. Evite las instanciaciones de tipo innecesarias
  2. Comprobación de casos negativos para literales de unión
  3. Reduzca las llamadas al escáner para el análisis de JSDoc
  4. ES2020 y Node.js 14.17 como requisitos mínimos de tiempo de ejecución
  5. TypeRoots explícito deshabilita subir node_modules/@types

Supongo que te gusta

Origin blog.csdn.net/qq_41974199/article/details/131135004
Recomendado
Clasificación