typescript: как показать map, что надо возвращать данные конкретного типа

Рейтинг: 1Ответов: 1Опубликовано: 24.03.2023

есть интерфейс:

export interface IData {
    name    : string,
    place?  : number
}

требуется получить массив таких данных из массива других данных с помощью метода map

если делать так:

const data: IData[] = arr.map((elem: IElem) => ({
    name: elem.name,
    place: elem.place
}));

то будет ошибка:

Type '{ name: string; place: number | undefined; }[]' is not assignable to type 'IData[]'.

Как корректно от нее избавиться?

Ответы

▲ 2Принят

Такая ошибка может быть только при включенной опции exactOptionalPropertyTypes - отсутствие поля требует именно отсутствие, а не поле undefined, поэтому если указанный тип явно его не допускает, то нельзя.

Исправляется явным указанием undefined в типе: playground

export interface IData {
    name    : string,
    place?  : number | undefined,
}