typescript 泛型三元返回值

function toArray<T>(args: T) {
    return Array.isArray(args) ? args : [args];
}

const target = [1];

const targetArray = toArray(target).map((t) => t);

此时会 map 会 ts 报错:
This expression is not callable.

请问下这是为啥?如何解决?

阅读 2.7k
1 个回答

显式声明一下?

function toArray<T>(args: T[]) : T[];
function toArray<T>(args: T) : T[];
function toArray<T>(args: T) {
    return Array.isArray(args) ? args : [args];
}

const target = [1];

const targetArray = toArray(target).map((t) => t);
const targetArray2 = toArray(2).map((t) => t);