如何解决字符串上的打字稿条件类型包括
我想输入一个函数,它接受一个字符串作为输入,如果字符串包含'[]',则返回一个列表,否则返回一个对象。类似的东西:
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'>();
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。