Args validation...

typescript

args validation:
другие самплы
type ArgTypes = {	
	undefined: any,
	LikeMutation: {postId: number},
	OtherType: string,
}

type Like2Mutation = {	
	field: 'fff'
}

type LikeMutation = {	
	__typename: 'LikeMutation'
}

type QueryOptions<T> = {	
	variables: T,
	multiple: boolean,	
}

let r = query<LikeMutation>({	
	variables: {postId: 1},
	multiple: false
})


function query<T extends { __typename?: keyof ArgTypes } & {[key: string]: unknown}>(
	arg: QueryOptions<T['__typename'] extends keyof ArgTypes ? ArgTypes[T['__typename']] : any>): void{

}

function query3<T extends {}>(
	arg: QueryOptions<'__typename' extends keyof T 
		? T['__typename'] extends keyof ArgTypes ? ArgTypes[T['__typename']] : any
		: any>): void{
}


query({ variables: '222', multiple: false });

query<LikeMutation>({ variables: { postId: 8}, multiple: true })

query<Like2Mutation>({ variables: { postId: 8}, multiple: true })
(ваш голос учтен)

Прикрепить файл