如何将void []转换为U []

时间:2019-07-26 19:51:12

标签: typescript

我有这个输出on the Playground

  

[1、2、3]

     

[未定义,未定义,未定义]

我只想用5替换第二个元素。这是我的代码:

Program.ts

import { Utils } from "./Utils";

class Program
{
    public static Main(): void
    {
        let array = [1, 2, 3];
        console.log(array);

        let array2 = Utils.ArrayModify(array, 1, 5);
        console.log(array2);
    }
}

Program.Main();

Units.ts

export class Utils
{
    public static ArrayModify<U>(array: U[], index: number, newValue: U)
    {
        return array.map((oldValue: U, currentIndex: number) =>
        {
            currentIndex === index ? newValue : oldValue;
        });
    }
}

array.map 返回void []类型,但我需要U []。

2 个答案:

答案 0 :(得分:2)

您忘记了return

return currentIndex === index ? newValue : oldValue;

答案 1 :(得分:0)

如另一篇文章中所述,没有返回值,而且因为数组只是javascript中的对象,所以上面的代码可以重新写入。

export class Utils
{
    public static ArrayModify<U>(array: U[], index: number, newValue: U): U[]
    {
        return Object.assign([], array, {[index]: newValue});
    }
}