代码之家  ›  专栏  ›  技术社区  ›  Jeanluca Scaljeri

如何向“”添加类型。。。typescript中的参数

  •  12
  • Jeanluca Scaljeri  · 技术社区  · 8 年前

    我有一个这样的函数

    function foobar(...args): any {
        ....
    }
    

    函数签名相当通用,但它只接受字符串和最后一个X类型的对象(所有都是可选的)

    foobar();
    foobar('a');
    foobar('a', 'b', 'c');
    foobar('a', { ... });
    foonbar('a', 'b', { ... }); 
    

    例如,有什么方法可以添加类型吗

    function foobar(...args: [...string, X]) {  // this doesn't work!
    
    }
    

    有什么建议吗?

    2 回复  |  直到 8 年前
        1
  •  16
  •   klugjo    8 年前

    您可以为 ...args 扩散参数,但 它必须是一系列的东西

    即

    function foobar(...args: string[]): any {
        ....
    }
    

    在您的情况下,无法为最后一个对象指定特定类型,但可以执行以下操作:

    function foobar(...args: Array<string | IYourCustomType>): any {
        ....
    }
    

    通常情况下,将固定参数放在第一位,将可选参数放在最后,这样我就可以将函数重写为

    function foobar(obj: IYourCustomType, ...args: string[]): any {
        ....
    }
    
        2
  •  3
  •   tpdietz    5 年前

    此后,typescript键入元组的能力得到了改进。现在可以唯一地键入每个元素。资料来源: https://www.typescriptlang.org/docs/handbook/release-notes/typescript-4-0.html

    function getSomething(tuple: [string, boolean]): any => { ... }
    
    推荐文章