У меня есть интерфейс, как показано ниже для ввода объекта.
export interface IList{
name: string;
age: number;
option: number;
quantity: number;
priority: number;
}
Из-за некоторых требований я должен присвоить «строку» свойству «приоритет» в конце всех операций перед отправкой его бэкэнду.
Поскольку я должен назначить строку, я попытался использовать оператор объединения: -
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 имеет значение true, иначе я должен назначить строку: -
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");
}
}