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

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

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[]'.

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


Ответы (1 шт):

Автор решения: Qwertiy

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

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

export interface IData {
    name    : string,
    place?  : number | undefined,
}
→ Ссылка