consider a query param config with asymmetric encoded and decoded type: ```ts const NumberToStringParam: QueryParamConfig<number, string> = { encode: (value) => value.toString(), decode: (value) => { if (typeof value !== 'string') { return '' } return value ?? '' } } ``` This will fail the typecheck: ```ts encodeQueryParams({ foo: NumberToStringParam }, { foo: 123 }) ``` [TS Playground link](https://www.typescriptlang.org/play/?#code/JYWwDg9gTgLgBAbzgUwHYGMIBNkEUCuyUAngAoCGU5IAzgDRwFFmXUDCEqAZsAOZwBfOFygQQcAOT4ayALQBHQiVlhWtCQG44Aem1wYxMMhoAuOACYAdFYCMAWABQjzKhrwAcvhAAjIgBUIAGUYKGBUXgoqEDMmEkj2Th5eAB5UL18oBjdQ8IA+OABeREc4FAxsZDMACgA3cgAbQgBKQvy6xuRLGCCQsN4qproSuBxMHGr25tbih1LS4C44KoMjCEXJ5DgAQgKiiWy+iRaEYbm4KGQYfChUSQlTwQeLq5u4DbgAfg+74YFHP6cDjQYzwShYURoVROs2EEAgZk8Pn8PRyETU-yGDmhpS4cLMNnMAGZ-k0gA)