dictionaryDesde: siempre
Un mapa de claves de tipo cadena de texto a valores.
Podés construir un diccionario encerrando entre paréntesis pares key: value separados por comas. Los valores no tienen por qué ser del mismo tipo. Como los paréntesis vacíos ya producen un array vacío, tenés que usar la sintaxis especial (:) para crear un diccionario vacío.
Un diccionario es conceptualmente similar a un array, pero se indexa por cadenas de texto en lugar de enteros. Podés acceder a las entradas de un diccionario y crearlas con el método .at(). Si conocés la clave de forma estática, alternativamente podés usar la notación de acceso a campos (.key) para acceder al valor. Para comprobar si una clave está presente en el diccionario, usá la palabra clave in.
Podés iterar sobre los pares de un diccionario con un bucle for. Esto itera en el orden en que se insertaron o declararon inicialmente los pares.
Los diccionarios se pueden sumar con el operador + y unir. También se pueden expandir en una llamada a función o en otro diccionario con el operador ..spread1. En cada caso, si una clave aparece varias veces, el último valor sobrescribe a los demás.
Ejemplo
#let dict = (
name: "Typst",
born: 2019,
)
#dict.name \
#(dict.launch = 20)
#dict.len() \
#dict.keys() \
#dict.values() \
#dict.at("born") \
#dict.insert("city", "Berlin")
#("name" in dict)

- 1Al expandir en un diccionario, si todos los elementos entre paréntesis se expanden, tenés que empezar el contenedor con
(:, como en(: ..dict, ..other_dict). De lo contrario, se infiere que el contenedor es un array y se produce un error.
Constructor
Convierte un valor en un diccionario.
Tené en cuenta que esta función solo está pensada para convertir en diccionario un valor similar a un diccionario, no para crear un diccionario a partir de pares individuales. Para eso, usá la sintaxis de diccionario (key: value). Mirá también array.to-dict para convertir arrays en diccionarios.
Ver ejemplo
#dictionary(sys).at("version")

value
El valor que se debe convertir en diccionario.
Funciones
lenDesde: siempre
La cantidad de pares del diccionario.
atDesde: siempre
Devuelve el valor asociado a la clave especificada en el diccionario.
Se puede usar en el lado izquierdo de una asignación si la clave ya está presente en el diccionario. Devuelve el valor por defecto si la clave no forma parte del diccionario, o falla con un error si no se especificó ningún valor por defecto.
También se puede acceder a los valores con la sintaxis de campos (por ejemplo, (key: 42).key) si no hace falta un valor por defecto.
key
La clave del elemento que se quiere obtener.
defaultany
Un valor por defecto para devolver si la clave no forma parte del diccionario.
insertDesde: siempre
Inserta un par nuevo en el diccionario. Si el diccionario ya contiene esta clave, se actualiza el valor.
Para insertar varios pares a la vez, alternativamente podés sumar otro diccionario con el operador +=.
key
La clave del par que se debe insertar.
valueanyObligatorioPosicional
El valor del par que se debe insertar.
removeDesde: siempre
Elimina un par del diccionario según su clave y devuelve el valor.
key
La clave del par que se quiere eliminar.
defaultany
Un valor por defecto para devolver si la clave no existe.
keysDesde: siempre
Devuelve las claves del diccionario como un array, en orden de inserción.
valuesDesde: siempre
Devuelve los valores del diccionario como un array, en orden de inserción.
pairsDesde: siempre
Devuelve las claves y los valores del diccionario como un array de pares. Cada par se representa como un array de longitud dos.
filterDesde: 0.15.0
Produce un diccionario nuevo solo con los pares del original para los cuales la función indicada devuelve true.
Ver ejemplo: Uso básico
#{
(a: 0, b: 1, c: 2)
.filter(v => v > 0)
}

Ver ejemplo: Filtrado según la clave en lugar del valor
#{
(a: 0, b: 1, c: 2)
.pairs()
.filter(((k, v)) => k != "a")
.to-dict()
}

test
La función que se aplica a cada valor. Debe devolver un booleano.
mapDesde: 0.15.0
Produce un diccionario nuevo en el que las claves son las mismas, pero los valores se transforman con la función indicada.
Ver ejemplo
#(a: 0, b: 1, c: 2).map(v => v + 1)

mapper
La función que se aplica a cada valor.