Executando verificação de segurança...
2

Zod é muito bom mesmo, porem seu exemplo esta aceitando outras strings pois vc esta fazendo casting de tipo quando usa o "as", forcando um tipo:

'const a: IStdin['a'] = d.toString().trim() as IStdin['a']'

O definicao de tipos vem do developer, entao ele é responsavel por acertar e ter controle dos tipos. Para runtime sempre bom ter uma validacao, a vantagem de usar Zod em relacao com outros como Joi, Yup é que ele casa muito bem com typescript, ajudando assim no desenvolvimento.

Carregando publicação patrocinada...
1

é que sem o casting ele não executaria por conflito de tipos...
O problema é q o typescript n foi feito para verificações e sim para facilitar o desenvolvimento!

1

Entao por ter este conflito ele protege seu codigo. No caso vc nao consegue compilar seu codigo por conta do erro, sem compilar para JS e sem o bundle vc nao tem a aplicacao. Sendo assim é tarefa do Desenvolvedor identificar esses tipos errados e corrigi-los. Typescript ajuda a identificar os erros, quem deve trata-lo é o dev.

Como comentei anteriormente uso de Zod, Joi , Yup , etc sempre é bom. Porem o seu exemplo esta um pouco fora do contexto.