Typescript 在类的TS中使用开放式参数

Typescript 在类的TS中使用开放式参数,typescript,Typescript,在下面的示例中,我希望传递给方法test的数组长度匹配。 有人能解释为什么它不能按预期工作吗 class Beef { public id: number; } class Steak { public run() { const testBeefs = this.getBeef(); console.log('Should be 5, got '+ testBeefs.length); const re

在下面的示例中,我希望传递给方法
test
的数组长度匹配。 有人能解释为什么它不能按预期工作吗

class Beef
{
    public id: number;
}

class Steak
{
    public run()
    {
        const testBeefs = this.getBeef();
        console.log('Should be 5, got '+ testBeefs.length);
        
        const result = this.test(testBeefs);

        return result;
    }
    
    private getBeef():Beef[]
    {
        const output: Beef[] = [];
        for (var i = 1; i <= 5; i++)
        {
            const newBeef = new Beef();
            newBeef.id = i;
            output.push(newBeef);
        }
        return output;
    }

    private test(...beefs: Beef[]): number
    {
        console.log('Should be 5, got '+ beefs.length);
        
        var output = 0;
        for (var i = 0; i < beefs.length; i++)
            output += beefs[i].id;
          
        return output;
    }
}
等级牛肉
{
公众id:号码;
}
上等牛排
{
公营
{
const testBeefs=this.getBeef();
log('应该是5,got'+testBeefs.length);
const result=this.test(testBeefs);
返回结果;
}
私有getBeef():牛肉[]
{
常量输出:Beef[]=[];

对于(var i=1;i
test
不需要数组,它需要的是
Beef
类型的未指定数量的参数

你可以这样称呼它:

const result = this.test(...testBeefs)
或者将签名更改为仅使用数组作为第一个参数:

private test(beefs: Beef[]): number