【问题标题】:Same arguments type, is there any short method?相同的参数类型,是否有任何简短的方法?
【发布时间】:2022-07-07 01:15:01
【问题描述】:
function setColor(r:number, g:number, b:number, a:number) { ... }

我不想这样。

interface Color {
     r:number;
     g:number;
     b:number;
     a:number;
}

有什么方法可以缩短迭代参数输入?

【问题讨论】:

  • 你有什么问题?当然,你可以让它变得不那么清晰和复杂,但是为什么呢?
  • 所以改用function setColor(col: Color) {…}?目前还不清楚您想要什么而不是四个参数,以及是什么阻碍了您使用您想要的替代方案。
  • @jonrsharpe 感谢您纠正我的语法错误。
  • @Bergi 如果一个函数需要 10 个因子,并且它们都是数字类型,那么一遍又一遍地编写类型很无聊。例如,函数 Boo (a:number, b:number, c:number, d:number, e:number...)。我想知道是否有更复杂和整洁的方法。 (不使用界面)
  • 只需复制/粘贴:number, 部分。

标签: typescript


【解决方案1】:

对象属性无序。函数参数是有序的。这意味着没有办法从具有许多属性的对象类型转到这些属性的有序参数列表。

因此,如果您想要具有 4 个单独参数的函数签名,那么您已经拥有的就是最好的选择。


如果你想大量重用参数的顺序,你可以创建一个元组类型来用于你的函数:

type ColorParameters = [r: number, g: number, b: number, a: number]

function setColor(...[r, g, b, a]: ColorParameters) {
  //...
}

setColor(64, 192, 255, 0.1)

See playground


如果你愿意改变你的函数来接受一个对象,你可以这样做:

interface Color {
     r:number;
     g:number;
     b:number;
     a:number;
}

function setColor({ r, g, b, a }: Color) {
  //...
}

setColor({ r: 64, g: 192, b: 255, a: 0.1 })

See playground

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-06
    • 1970-01-01
    • 2012-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多