¿Por qué `a` es igual a `null` y `[]` de tipo `never[]`?
¿Por qué estoy obteniendo una inferencia de tipo diferente aquí para el array? const a = []; // any[] const b = null ?? []; // never[] Demo aquí
Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.
¿Por qué estoy obteniendo una inferencia de tipo diferente aquí para el array? const a = []; // any[] const b = null ?? []; // never[] Demo aquí
Tengo el siguiente código: export type EntityType = “foo” | “bar”; export interface Foo { id: `foo-${string}`; } export interface Bar { id: `bar-${string}`; } export type Ent<t extends=”” entitytype=””> = T extends “foo” ? Foo : Bar; export const resolve = <t extends=”” entitytype=””>(id: `${T}-${string}`): Ent<t> => { if . . . Read more
Estoy estudiando la correspondencia Curry-Howard. Dada la declaración de lógica proposicional: (¬p -> q) -> ((¬p -> ¬q) -> p). Necesito definir un tipo (como proposición) y una función (como una prueba) en OCaml. Se me ocurrió el siguiente código y me quedé atascado: type empty = | ;; let . . . Read more
He definido una función con error: let first : ‘a -> ‘b -> ‘a = fun x y -> y ;; (* Resultado: val first : ‘a -> ‘a -> ‘a = *) El compilador lo acepta y cambia el tipo de ‘a->’b->’a a ‘a->’a->’a. No debería funcionar porque el . . . Read more
Tengo problemas para entender por qué TypeScript infiere program.options aquí como ProgramAOptions | ProgramBOptions. Por lo tanto, no puede compilar el código ya que optA no existe en ProgramBOptions. ¿Puede explicar esto o indicarme la documentación que explique este comportamiento? type ProgramName = ‘a’ | ‘b’; type ProgramAOptions = { . . . Read more