TypeScript 5.3 lanzado oficialmente

TypeScript 5.3 ha sido lanzado oficialmente.

Principales cambios


importar atributos

Un caso de uso para los atributos de importación es proporcionar al tiempo de ejecución información sobre el formato esperado del módulo.

// We only want this to be interpreted as JSON,
// not a runnable/malicious JavaScript file with a `.json` extension.
import obj from "./something.json" with { type: "json" };

TypeScript no verifica el contenido de estas propiedades porque son específicas del host, por lo que no se verifican y simplemente se dejan al navegador y al tiempo de ejecución para manejarlos (potencialmente con errores).

// TypeScript is fine with this.
// But your browser? Probably not.
import * as foo from "./foo.js" with { type: "fluffy bunny" };

Las llamadas de importación dinámica () también pueden usar el atributo de importación a través del segundo parámetro.

const obj = await import("./something.json", {
    with: { type: "json" }
});

El tipo esperado del segundo argumento está ImportCallOptionsdefinido por un tipo denominado , que de forma predeterminada sólo espera que se llame a una propiedad with.

Tenga en cuenta que las propiedades de importación evolucionaron a partir de la propuesta anterior para "aserciones de importación", que se implementó en TypeScript 4.5. La diferencia más obvia es el uso de withpalabras clave en lugar de assertpalabras clave. Pero la diferencia menos obvia es que el tiempo de ejecución ahora es libre de usar propiedades para guiar el análisis y la interpretación de las rutas de importación, mientras que las aserciones de importación solo pueden afirmar ciertas características después de cargar el módulo.

Con el tiempo, TypeScript desaprobará la sintaxis de aserción de importación anterior en favor de la sintaxis de propiedad de importación recomendada. El código existente que utiliza afirmar debe migrarse a la palabra clave with. El código nuevo que requiere propiedades importadas solo debe usar withla palabra clave.

switch (true)Estrechamiento

TypeScript 5.3 puede realizar una reducción según las condiciones switch (true)de cada casecláusula.

function f(x: unknown) {
    switch (true) {
        case typeof x === "string":
            // 'x' is a 'string' here
            console.log(x.toUpperCase());
            // falls through...

        case Array.isArray(x):
            // 'x' is a 'string | any[]' here.
            console.log(x.length);
            // falls through...

        default:
          // 'x' is 'unknown' here.
          // ...
    }
}

Consulte el anuncio de lanzamiento para obtener más detalles .

Supongo que te gusta

Origin www.oschina.net/news/267382/typescript-5-3-ga
Recomendado
Clasificación