字符串includes上的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'>();

最新更新