• 1
  • 新人请关照

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.

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

阅读 328
评论
    1 个回答
    • 8.9k

    显式声明一下?

    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);