[Typescript] Type incompatible function argument as never

For the following code:

const objOfFunctions = {
  string: (input: string) => input.toUpperCase(),
  number: (input: number) => input.toFixed(2),
  boolean: (input: boolean) => (input ? "true" : "false"),
};

const format = (input: string | number | boolean) => {
  const inputType = typeof input as "string" | "number" | "boolean";
  const formatter = objOfFunctions[inputType];

  return formatter(input); // Error: Argument of type 'string | number | boolean' is not assignable to parameter of type 'never'.
  // Type 'string' is not assignable to type 'never'.
};

 

This is due to inputis typed as intersection of string & number & booleanwhich results as never

So you have to do:

const format = (input: string | number | boolean) => {
  const inputType = typeof input as "string" | "number" | "boolean";
  const formatter = objOfFunctions[inputType];

  return formatter(input as never);
};

 

posted @   Zhentiw  阅读(7)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
历史上的今天:
2023-08-07 [React Typescript] Ensure correct inference for prop types with satisfies & ComponentProps
2023-08-07 [Docker] Volume with --env
2023-08-07 [Docker] Bind Mounts
2022-08-07 [Typescript] Dictionary map, filter and reduce
2021-08-07 [SAA + SAP] 23. Streaming Atchitectures
2021-08-07 [SAA + SAP] 22. Kinesis & AWS MQ
2021-08-07 [SAA + SAP] 21. SNS
点击右上角即可分享
微信分享提示