Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 错误:键入';[number]|[number,number,number,number]&x27;不可分配给类型';[编号]';_Angular_Typescript - Fatal编程技术网

Angular 错误:键入';[number]|[number,number,number,number]&x27;不可分配给类型';[编号]';

Angular 错误:键入';[number]|[number,number,number,number]&x27;不可分配给类型';[编号]';,angular,typescript,Angular,Typescript,从angular 5.1更新到6.1后,我开始从我的代码中收到一些错误,如下所示: 错误:ngc编译失败:components/forms/utils.ts(5,3):错误 TS2322:类型“[number]|[number,number,number,number]”不正确 可分配给类型“[number]” 遵循代码: export function bsColumnClass(sizes: [number]) { let sizebs = ['col-xs-', 'col-sm-',

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

错误:ngc编译失败:components/forms/utils.ts(5,3):错误 TS2322:类型“[number]|[number,number,number,number]”不正确 可分配给类型“[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;
}
我注意到问题是因为我有一个函数参数
size:[number]
,然后我就开始训练做这行代码:
size=size |[12,12,12,12]


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

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

type[]
而不是

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

如果是这样,则应相应地键入函数

function bsColumnClass(sizes?: number[]) {
}

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

如果您要定义数字数组,则语法为
number[]
(通常对于数组,我们有
type[]
)。您定义的是元组类型,它具有固定数量的元素,并且可以具有异构元素类型

export function bsColumnClass(sizes: number[]) {


}
或者,如果您希望强制调用者只传递数组中的4个元素,这在本例中是有意义的,因为
sizebs
是固定的,您可以使用元组类型:

export function bsColumnClass(sizes: [number, number, number, 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;
}

在这个问题中,我在参数
size:[number]
中发现了语法问题,您可以使用
size:number[]

您可以尝试以下方法:

export function bsColumnClass(sizes: number[]) {
  const sizebs = ['col-xs-', 'col-sm-', 'col-md-', 'col-lg-'];

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

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

  return className;
}

//bsColumnClass([1, 2, 6, 3]);