.optional / .nullablezodMethods스키마가 받아들이는 값의 폭을 넓히는 래퍼. undefined를 더하는 optional, null을 더하는 nullable, 둘 다 더하는 nullish.→.parse / .safeParsezodMethods스키마로 unknown 값을 검사하는 두 입구. 실패를 던질지, 값으로 돌려받을지가 갈린다.→.refinezodMethods스키마가 통과시킨 값에 사용자 정의 조건을 하나 더 붙인다. 타입은 그대로 두고 규칙만 검사한다.→z.arrayzodSchemas배열의 원소 하나에 스키마를 걸고, 그 스키마로 배열 안의 모든 원소를 검사한다. 통과하면 원소 타입이 확정된 배열이 나온다.→z.inferzodTypes스키마 하나에서 TypeScript 타입을 뽑아낸다. 파싱이 끝난 뒤의 값이 갖는 타입 그대로 나와, 스키마와 타입이 따로 놀 일이 없다.→z.objectzodSchemas객체의 모양을 스키마로 선언하고, 그 모양대로 unknown을 파싱한다. 통과하면 타입이 확정된 값이 나온다.→z.stringzodPrimitives문자열 하나를 스키마로 선언하고, 길이·패턴·포맷을 그 자리에서 검사한다.→.default / .catchzodMethods입력이 undefined일 때 값을 채우는 default, 파싱이 실패했을 때 값을 대신 돌려주는 catch. 발동 조건과 검증을 거치는지가 다르다.→.transformzodMethods검증을 통과한 값을 다른 모양으로 바꾼다. 입력 타입과 출력 타입이 서로 달라질 수 있다.→Object 메서드zodMethods이미 선언한 z.object 스키마를 다시 적지 않고 파생시키는 메서드들. extend·pick·omit으로 모양을 바꾸고, partial·required로 필수 여부를 바꾼다.→String formatszodPrimitives이메일·URL·UUID처럼 정해진 문자열 포맷을 z.string() 체이닝이 아니라 최상위 함수로 검사한다.→z.coercezodPrimitives검사에 앞서 JS의 String·Number·Boolean 변환을 입력에 먼저 돌리고, 그 결과를 스키마로 검사한다.→z.discriminatedUnionzodSchemas객체 후보마다 공통 판별 키를 두고, 그 키의 리터럴 값으로 어느 후보인지 먼저 골라 그 후보만 검사하는 유니온이다.→z.enumzodPrimitives정해진 문자열 목록 중 하나인지 검사하고, 그 목록 그대로 리터럴 유니온 타입을 뽑는다.→z.literalzodPrimitives값 하나를 정확히 고정해 그 값과 같은지만 검사한다. z.infer로 뽑히는 타입도 그 리터럴 값 자체로 좁혀진다.→z.numberzodPrimitives숫자 하나를 스키마로 선언하고, 유한성·정수 여부·범위를 그 자리에서 검사한다.→z.recordzodSchemas키 스키마 하나와 값 스키마 하나로 객체를 선언하고, 그 둘로 객체 안의 모든 키·값 쌍을 검사한다. 키 이름을 미리 다 나열할 수 없을 때 쓴다.→z.unionzodSchemas여러 스키마 중 하나만 맞으면 통과시키는 스키마다. 후보를 앞에서부터 순서대로 시도해 처음 맞는 스키마로 통과한다.→ZodErrorzodErrorsparse가 실패하면 던지고 safeParse가 실패하면 돌려주는 값이다. issues 배열에 실패 이유가 담기고, 용도에 맞게 모양을 바꿔주는 함수들이 따로 있다.→.pipezodMethodsa의 출력을 b의 입력으로 넘겨, 변환한 값을 다시 검증하는 체인을 만든다.→z.booleanzodPrimitives참과 거짓만 엄격하게 검사하고, 문자열이나 숫자 같은 truthy 값은 다 막는다. 문자열을 boolean으로 바꾸려면 z.coerce.boolean이나 z.stringbool을 따로 써야 한다.→z.datezodPrimitives실제 Date 인스턴스인지 검사하고, 문자열이나 Invalid Date는 타입이 다르다며 막는다. 날짜 문자열은 z.iso 계열로, Date로 변환하려면 z.coerce.date로 따로 다룬다.→z.intersectionzodSchemas두 스키마를 하나로 묶어, 값이 둘 다를 동시에 만족해야 통과하는 스키마를 만든다. 타입도 A와 B가 A & B로 합쳐진다.→z.lazy · 재귀 스키마zodSchemasz.lazy(() => Schema)는 스키마의 평가를 파싱 시점까지 미뤄서, 스스로를 가리키는 재귀 구조를 선언하게 해 준다. 트리나 댓글 스레드처럼 깊이가 정해지지 않은 데이터에 쓴다.→z.tuplezodSchemas자리마다 스키마가 다른 고정 길이 배열을 선언한다. 몇 번째 자리에 뭐가 오는지가 타입과 검증에 그대로 남는다.→.brand / .readonlyzodMethodsbrand는 구조가 같은 타입을 타입 레벨에서 서로 다르게 만들고, readonly는 파싱한 값을 얼려 수정을 막는다.→z.bigintzodPrimitivesbigint 값 하나를 스키마로 선언하고, number와는 다른 타입임을 파싱 단계에서 확인한다.→z.codeczodMethodsz.codec(input, output, { decode, encode })는 양방향 변환을 스키마 하나로 선언한다. decode로 input을 output으로 바꾸고, encode로 그 반대 방향까지 정의해 둔다.→z.custom / z.instanceofzodSchemasZod가 표현하지 못하는 타입은 z.custom으로 검사 함수를 직접 걸고, 클래스 인스턴스인지는 z.instanceof로 확인한다.→z.functionzodMethods함수의 인자와 반환값에 스키마를 걸어 둔다. 진짜로 검사가 걸리는 함수는 .implement()로 따로 뽑아낸다.→z.map / z.setzodSchemasMap 전체를 z.map으로, Set 전체를 z.set으로 검사한다. 키·값이나 원소 하나하나를 스키마로 걸되, 통과 대상은 진짜 Map·Set 인스턴스로 한정된다.→특수 원시값zodPrimitives값 하나를 잡기보다 이 자리에 뭐가 와야 하는지를 표현하는 특수 원시값 일곱 개를 모은다.→