Tipos de intersección
Parte de la sección Introducción a Luau del Journey de Lua de Coddy. Lección 36 de 80.
Las uniones indican que un valor es de un tipo o de otro. Los tipos de intersección apuntan en la dirección opuesta: el ampersand & combina formas de tablas en un tipo que tiene todos los campos de cada parte:
type HasName = { name: string }
type HasAge = { age: number }
type Person = HasName & HasAge
-- un Person debe tener AMBOS campos
local user: Person = {
name = "Alice",
age = 25,
}Omite age y el verificador se quejará: una intersección es un «y», nunca una elección entre opciones. Esto te permite crear formas grandes a partir de piezas pequeñas y reutilizables: define tipos específicos para aspectos separados y después únelos según sea necesario:
type HasEmail = { email: string }
type Employee = HasName & HasAge & HasEmail
Una nota importante sobre Luau: intersecta formas de tablas (y tipos de función), no tipos primitivos. Algo como number & string no tiene sentido, ya que ningún valor puede ser ambas cosas a la vez. Cuando quieras «esta forma más aquella forma», & es la herramienta adecuada.
En tiempo de ejecución, por supuesto, un Person es simplemente una tabla Lua normal: la intersección solo existe para el verificador.
Desafío
FácilCombina dos formas pequeñas en una.
- Escribe
type HasName = {name: string},type HasAge = {age: number}ytype Person = HasName & HasAge. - Crea
local user: Person = {name = "Omar", age = 31}. - Imprime
`Name: {user.name}, Age: {user.age}`.
Presiona Ejecutar código: el resultado muestra Name: Omar, Age: 31.
Pruébalo tú mismo
-- 1) type HasName, type HasAge, type Person = HasName & HasAge
-- 2) local user: Person = {...}
-- 3) imprime la línea con el nombre y la edad
Todas las lecciones de Introducción a Luau
1Primeros pasos con Luau
¿Qué es Luau?¿Por qué usar Luau?Tu primer código en LuauComprobación de tipos y modos de errorRecapitulacion: Introducción a Luau4Trabajar con funciones
Tipado de parámetros y valores de retornoTipado de funciones anónimasFunciones que no devuelven nadaParámetros opcionalesValores predeterminados de parámetrosValores predeterminados para booleanosFunciones variádicasDefinir tipos de funcionesRepaso: funciones tipadas7Proyecto: Gestor de tareas tipado
Proyecto: La estructura de una tareaFunción para añadir una tarea2Tipos fundamentales
Número, cadena y booleanoEl tipo 'any': una salida de emergenciaEl tipo 'unknown'Tipos nulos y opcionalesLa inferencia de tipos en acciónAnotaciones de tipo explícitasRepaso: práctica de tipos fundamentales5Alias, Uniones e Intersecciones
Alias de tipos para primitivosTipos de uniónTrabajando con tipos de uniónTipos literalesTipos de intersecciónCombinando alias de tiposResumen: Combinaciones avanzadas de tipos3Tablas tipadas: arrays y mapas
Arrays tipadosAgregar y leer elementos¿Qué es un tipo mapa?Declarar y acceder a mapasRecorrer tablasTablas de formas mixtasLeer una cuadrículaConstruir una cuadrículatable.unpackRepaso: arrays y mapasPractica por tu cuenta: Compilador de Luau online