我有一个如下所示的接口,用于输入对象。
export interface IList{
name: string;
age: number;
option: number;
quantity: number;
priority: number;
}由于一些要求,在发送到后端之前,我必须在所有操作的末尾为"priority“属性分配一个"string”。
因为我必须分配一个字符串,所以我尝试使用联合运算符:-
priority : number | string;但是,我使用其他操作的所有其他代码片段(将此作为一个数字考虑在内)也会抛出以下错误:
Argument of type 'string | number' is not assignable to parameter of type 'number'
Type 'string' is not assignable to type 'number'.我如何解决这个问题,并使用优先级作为字符串和数字来输入我的对象。
这里有一个条件,我使用"IList“接口作为类型,如果multiGroupHeader为真,则分配一个数字,否则我必须分配一个字符串:-
public updatePriorities(Lists) {
if(!this.multiGroupHeader){
const priorities = Lists.map((list:IList) => list.priority);
const uniquePriorities = [...new Set(priorities)];
if (uniquePriorities.length === 1 && uniquePriorities[0] === 1) {
return;
}
uniquePriorities.sort((priority1: number, priority2: number) => priority1 - priority2);
const updatedPriorities = uniquePriorities.map((priority: number, index: number) => {
return index + 1;
});
uniquePriorities.forEach((id: number, index: number) => {
Lists.forEach((list: List) => {
if (list.priority === id) {
list.priority = updatedPriorities[index];
}
});
});
} else {
Lists.forEach((list:List) => list.priority = "CURRENT");
}
}发布于 2020-03-06 17:40:05
按照您构建接口的方式,它不应该有任何类型错误,除非您没有遵守该接口的约定。
我假设你正在做这样的事情:
interface IList{
name: string;
age: number;
option: number;
quantity: number;
priority: number | string;
}
class Test {
constructor() {
let listItem: IList = {
name: "John Doe",
age: 23,
option: 2,
quantity: 2,
priority: 2
};
}
}这应该不会给您任何错误。要检查它的类型错误,您可以使用TypeScript游乐场。不应该有任何变通的理由。
我建议您尝试一下,看看您面临的实际合同错误是什么。
https://stackoverflow.com/questions/60560928
复制相似问题