Skip to content

Inconsistent type inference for optional #1207

Open
@anatoly-tenenev

Description

@anatoly-tenenev

Code to reproduce:

import * as v from 'valibot';

const S1 = v.pipe(
  v.optional(v.number()),
  v.transform(() => 'success')
);

type T1 = v.InferOutput<typeof S1>;

// expected type error when assign undefined
const test1: T1 = undefined;

const S2 = v.object({
  s1: S1,
});

type T2 = v.InferOutput<typeof S2>;

// inconsistent ability to assign undefined
const test2: T2['s1'] = undefined;

https://valibot.dev/playground/?code=JYWwDg9gTgLgBAKjgQwM5wG5wGZQiOAcg2QBtgAjCGQgbgCh6BjCAO1XgGUBGOAXkwA6MMDABTABT04QiGBjA2ZCRkGsAriApioEgJR6ANNKEwoydtmggJ+-gD4iqdUyZjUqQnvp6G9GACe4nAAKrwCqgCSrNg6APLqMGCJADyB4hDYcDz2fgD0eXBiAB7iTDBiACZw6WJFUHhQzGwcNe4w3ABcoeFw6qyVYtjArFV+LOxcAEz8shQAVmLlEgDeJqhd2dzGAL6+jLWhMxGC0bFQCUmptZnZU7mMBXAjE6jAHGKs8MgUwOSBNQgKA8wAA5qw+gMhiMqs1Jm0OFNuiEpgBtQgbQgAXVm-UGw1GlQYQA

Metadata

Metadata

Assignees

Labels

documentationImprovements or additions to documentationintendedThe behavior is expected

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions