typescript - 字符串上的打字稿条件类型包括
问题描述
我想键入一个函数,该函数将字符串作为输入,如果字符串包含“[]”则返回一个列表,否则返回一个对象。像这样的东西:
function func<T = any>(query: string): typeof query extends `${any}[]${any}` ? Array<T> : T {
if (query.includes('[]')) {
return [] as T[]
}
return {} as T
}
除非它不起作用,函数返回类型只是字符串。
我正在使用最新的打字稿版本(4.3.2)。
你能帮我吗?
解决方案
您只能使用类型参数而不是真正的函数参数来做到这一点:
function func<S extends string, T = any>(): S extends `${infer A}[]${infer B}` ? Array<T> : T {
}
const testFun = func<'a[]b'>();
const testFun2 = func<'ab'>();
推荐阅读
- ios - pod install Firebase Analytics pod Xcode 后无法生成进程(参数列表太长)
- javascript - Vue PWA 中触发的页面可见性事件不稳定
- c++ - 无法使用 fstream 写入文件 - 我似乎不明白为什么
- python - Wordcloud 使用短语而不是单个单词
- reactjs - signInWithEmailAndPassword 失败:第二个参数“密码”必须是一个有效的字符串与反应
- google-cloud-platform - 管理员或 GCP 中的用户登录时出现 Windows 2012 R2 RDS 黑屏
- reactjs - react-router中的Link和`window.history.pushState()`有什么区别?
- jquery - 如何在 Asp.net core mvc 视图中检查带有枚举值的单选按钮
- rabbitmq - RabbitMQ 在节点崩溃后删除损坏的队列
- python - 如何在python中继承类复杂?