打字稿“Immutable.Map <k,t =”“>作为对象”

时间:2018-02-18 03:33:16

标签: javascript angular typescript immutable.js

我正在重构一些TypeScript,并遇到了让我陷入困境的事情。

在下面的代码中,“as”关键字如何将Map<number, Trip>转换为“Trip”对象?如果不是那么它在做什么?

public mergeBookings(bookingData: Immutable.Map<number, Booking>) {

    // merge bookings
    const bookings: Immutable.Map<number, Booking> = this.mergeBookingData(bookingData);

    // sort bookings
    const sortedBookings: Immutable.Map<number, Booking> = SortingService.sortBookings(bookings);

    // add bookings to trip
    const trip: Map<number, Trip> = this.setBookingData(sortedBookings);

    return trip as Trip;
}

对关键字的解释,它对地图和其他对象的工作原理以及它的一些文档都很好,但任何信息都有助于维护这个代码库。

特别是我想更新函数定义以包含返回类型,但需要确信它确实是一个“Trip”对象。下面的示例所需函数定义:

public mergeBookings(bookingData: Immutable.Map<number, Booking>): Trip {...}

我已经查看了StackOverflow对TypeScript的回答,并且文档的长期谷歌会话没有提供任何帮助。根据标签,此代码使用:
打字稿

Immutable.js

1 个答案:

答案 0 :(得分:1)

as只是一个演员。它不做任何转换。它不会以任何方式改变trip。它的唯一目的是要求typescript编译器信任programer而不产生错误消息。