错误:输入'[数字] | [数字,数字,数字,数字]'不可分配给类型'[数字]'

Ric*_*cha 2 typescript angular

从 angular 5.1 更新到 6.1 后,我开始从我的代码中收到一些错误,如下所示:

错误:ngc 编译失败:components/forms/utils.ts(5,3):错误 TS2322:类型 '[number] | [编号,编号,编号,编号]' 不可分配给类型 '[编号]'。

遵循以下代码:

export function bsColumnClass(sizes: [number]) {

  let sizebs = ['col-xs-', 'col-sm-', 'col-md-', 'col-lg-',];

  sizes = sizes || [12, 12, 12, 12];

  let className = sizes.map(function callback(value, index, array) {
    return sizebs[index].concat(value.toString());
  }).join(" ");

  return className;
}
Run Code Online (Sandbox Code Playgroud)

我注意到问题是因为我有一个函数参数sizes: [number],然后我正在训练执行这行代码:sizes = sizes || [12, 12, 12, 12];

你能告诉我解决这个问题的更好方法吗?

小智 5

在 Typescript 中,数组的声明方式如下

type[]
Run Code Online (Sandbox Code Playgroud)

代替

[type]
Run Code Online (Sandbox Code Playgroud)

如果您尝试使用这些更改编写代码,它应该可以工作,但是,如果我错了,请纠正我,但是,您是否尝试为尺寸分配一个数字列表,以防尺寸未定义?

如果是这样,您应该相应地键入您的函数

function bsColumnClass(sizes?: number[]) {
}
Run Code Online (Sandbox Code Playgroud)

如果您不向函数提供变量,将确保该事件,代码保持静态类型并接受变量参数