代码之家  ›  专栏  ›  技术社区  ›  Jonathan Wilbur

将数组传递给TypeScript中的变量函数

  •  1
  • Jonathan Wilbur  · 技术社区  · 7 年前

    我有一个方法应该接受一个数字数组或者接受一个可变数目的数字参数(variadic)。在我使用过的大多数语言中,当您使方法/函数变元时,它都接受,但在TypeScript中,您似乎不能。当我把这个特殊的函数变为变量时,我提供 number[]

    供参考的签名(课堂上 ObjectIdentifier ):

    constructor(... nodes : number[]) {
    

    这失败了:

    return new ObjectIdentifier(numbers);
    

    numbers 属于类型 .

    2 回复  |  直到 7 年前
        1
  •  2
  •   Brian Adams    7 年前

    以下是一种方法:

    class ObjectIdentifier {
      public myNodes: number[];
      constructor(first?: number | number[], ...rest: number[]) {
        this.myNodes =
          first === undefined
            ? []
            : first instanceof Array
              ? [...first, ...rest]
              : [first, ...rest];
      }
    }
    const empty = new ObjectIdentifier();
    const a = new ObjectIdentifier(1);
    const b = new ObjectIdentifier([1]);
    const c = new ObjectIdentifier(1, 2, 3);
    const d = new ObjectIdentifier([1, 2, 3]);
    const e = new ObjectIdentifier([1, 2, 3], 4, 5, 6);
    

    唯一的怪癖是在最后一种情况下,您可以将数组作为第一个参数传递,后跟可变数目的数字。

        2
  •  1
  •   kemsky    7 年前

    使用以下语法:

    const func = (...a: number[]) => console.info('a', a)
    
    func(1, 2, 3)
    
    func(...[1, 2, 3])
    
    推荐文章