【发布时间】:2021-08-25 09:49:06
【问题描述】:
我想键入一个函数,该函数将字符串作为输入,如果字符串包含“[]”则返回一个列表,否则返回一个对象。类似的东西:
function func<T = any>(query: string): typeof query extends `${any}[]${any}` ? Array<T> : T {
if (query.includes('[]')) {
return [] as T[]
}
return {} as T
}
除了不行,函数返回类型只有字符串。
我正在使用最新的 typescript 版本 (4.3.2)。
你能帮我吗?
【问题讨论】:
-
这是不可能的。并且在打字稿中没有意义。打字稿在运行时不存在。所以你使用一些在 runetime 之前声明的常量,你已经可以看到它,所以你可以知道它是什么类型。或者您获得动态参数(例如来自用户输入),那时没有 ts 并且您不需要这些类型。
-
这不是用户输入,是的,它是一个常数,我只是希望调用者不必自己输入返回值。
标签: typescript typescript-typings template-literals