Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

154
Vistas
El inicializador para el enlace condicional debe tener un tipo opcional, no '[Clave: ¿Valor?]'

Estoy tratando de traducir javascript a swift. Este es el método javascript:

 export function serializeProperty( properties: Map<Key, Value | null>, ): Array<[Key, JsonValue | null]> { const data = Array.from(properties.entries()); const processedData = data.map(entry => { const [key, value] = entry; if (value != null) { return [key, serializeValue(value)]; } return [key, null]; }); return processedData; } export function serializeValue(Value: Value): JsonValue { if (Value.type === 'string') { return {type: 'string', value: Value.value.toJson()}; } else if (Value.type === 'array_node') { return { type: 'array_node', value: Value.value.map(node => node.toJson()), }; } return Value; }

Lo he traducido en rápido como a continuación:

 func serializeProperty(properties: [Key: Value?]) -> [[Key: JsonValue?]]? { var data: [[Key: JsonValue?]]? guard let propertiesJson = properties else { return data } for property in propertiesJson { for item in property { if let unwrappedValue = item.value { properties[item.key] = try serializeValue(valueJson: unwrappedValue) } } } return data }

Recibo el error en esta línea: guard let propertiesJson = properties else { return data } ¿La traducción es correcta o me falta algo?

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

La traducción más simple de este TypeScript a Swift se verá así:

 func serializeProperty(properties: Dictionary<Key, Value?>) -> Array<(Key, JsonValue?)> { let processedData = properties.map() { key, value -> (Key, JsonValue?) in if let value = value { return (key, serializeValue(value: value)) } return (key, nil) } return processedData }

Tenga en cuenta el uso de (Key, JsonValue?) entre paréntesis regulares para indicar una tupla de Key y JsonValue? , haciendo coincidir la notación TypeScript de [Key, JsonValue | null] . También tenga en cuenta que tanto en las implementaciones de TypeScript como de Swift, el parámetro de properties es un tipo que no acepta valores NULL, por lo que no es necesario verificar null / nil .

Usando una cláusula de protección y devolviendo el resultado de properties.map() directamente, esto se puede simplificar aún más a:

 func serializeProperty(properties: Dictionary<Key, Value?>) -> Array<(Key, JsonValue?)> { return properties.map() { key, value in guard let value = value else { return (key, nil) } return (key, serializeValue(value: value)) } }

Volviendo al otro lado, la implementación de TypeScript también se puede simplificar de manera similar a:

 function serializeProperty(properties: Map<Key, Value|null>): Array<[Key, JsonValue|null]> { return Array.from(properties.entries()).map(([key, value]) => { if (value === null) { return [key, null]; } return [key, serializeValue(value)]; }); }
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda