Angular 错误:键入';[number]|[number,number,number,number]&x27;不可分配给类型';[编号]';
从angular 5.1更新到6.1后,我开始从我的代码中收到一些错误,如下所示: 错误:ngc编译失败:components/forms/utils.ts(5,3):错误 TS2322:类型“[number]|[number,number,number,number]”不正确 可分配给类型“[number]” 遵循代码: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-',
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]);