当前位置: 首页 > 知识库问答 >
问题:

typescript - route.query拿到的参数如何做类型推断?

尚安平
2023-11-08
const route = useRoute()const { sceneId, entry, name, mode } = route.query

每个参数的类型为string | string[]
如何能统一改成string呢?

const sceneId = route.query.sceneId as string可以实现,但是每个参数都得这样写一遍吗?

共有2个答案

左丘曦
2023-11-08
function getQueryStringValue(query: any, key: string): string {  const value = query[key];  return Array.isArray(value) ? value[0] : value;}// 用的时候:const route = useRoute();const sceneId = getQueryStringValue(route.query, 'sceneId');const entry = getQueryStringValue(route.query, 'entry');const name = getQueryStringValue(route.query, 'name');const mode = getQueryStringValue(route.query, 'mode');

或者:

const route = useRoute();// 假设所有值最终都应该是 stringconst queryParams = Object.entries(route.query).reduce((acc, [key, value]) => {  acc[key] = Array.isArray(value) ? value[0] : value;  return acc;}, {} as { [key: string]: string });const { sceneId, entry, name, mode } = queryParams;
马祺
2023-11-08

为什么会有这样的需求,像上面说了,万一这样不就爆了,程序还是严谨点会比较好

 类似资料:
  • 在写单元测试中,我想抽象一个通用的函数,避免重复书写。函数的定义如下: 但是我不知道如果建立 fn 函数参数的类型和 source 类型之间的联系。 请问要怎么写才可以让 source 的类型等于 fn 参数类型的数组?

  • TypeScript 类型检查机制包含三个部分: 类型推断 类型保护 类型兼容性 本节介绍其中的类型推断,类型推断主要用于那些没有明确指出类型的地方帮助确定和提供类型,这是 TypeScript 的一种能力。 类型推断是有方向的,要注意区分从左向右和从右向左两种推断的不同应用。 1. 慕课解释 类型推断的含义是不需要指定变量类型或函数的返回值类型,TypeScript 可以根据一些简单的规则推断其

  • 我有一个类,它有一些属性/方法,返回最初通过构造函数传递的值: 人们建议用泛型作为打字稿的等价物: 现在我有了一个子类,它调用超类的构造函数并传递以下选项: TypeScript编译器对此不满意,希望通过类型扩展Base类。但是我有两次信息,在超级呼叫和扩展符号中。什么是正确的ts语法来解决我的问题? (键入脚本中的代码)

  • 我的分类测试应用程序有一个问题,我使用了一个比较器。我收到一条信息: 线程“主”java.lang 中的异常:未解决的编译问题:无法推断排序器的类型参数 对于该代码: 分拣机类: 可比接口: id比较器类: 比较器接口: 这样用有什么错?我怎样才能做得更好?

  • 关于TS类型推导中结果中,函数参数的类型问题? 链接在这里:https://tsplay.dev/mxE51W 问题是: 为什么在action中,调用cx('a')的时候,参数类型是never呢? 如何让cx根据传入的泛型T来决定接受的类型呢?