打字稿与对象解构的可选链

时间:2020-01-08 08:11:47

标签: typescript

我刚刚将duration_str更新为<?php $timeslot = []; $timeslot[] = '07:00-08:00'; $timeslot[] = '07:15-07:30'; $timeslot[] = '07:30-08:30'; $timeslot[] = '10:45-11:45'; $min_time = -1; $max_time = -1; $total_minutes = 0; foreach($timeslot as $slot){ list($start_time,$end_time) = explode("-",$slot); $start_time = explode(":",$start_time); $start_time = intval($start_time[0]) * 60 + intval($start_time[1]); // converting to minutes $end_time = explode(":",$end_time); $end_time = intval($end_time[0]) * 60 + intval($end_time[1]);// converting to minutes if($min_time == -1){// or max time for that matter (just basic initialization of these 2 variables) $min_time = $start_time; $max_time = $end_time; $total_minutes += $max_time - $min_time; }else{ if($start_time >= $max_time) $total_minutes += $end_time - $start_time; else if($start_time < $max_time && $end_time > $max_time) $total_minutes += $end_time - $max_time; $min_time = min($min_time,$start_time); $max_time = max($max_time,$end_time); } } echo intval($total_minutes / 60),":",($total_minutes % 60)," hrs"; ,我正在尝试编辑代码。

我有一个简单的代码

typescript

我想将3.7.4interface Test event: { queryStringParameters: { [name: string]: string } | null; } } const test:Test = (event) => { // const { no } = event?.queryStringParameters; //Property 'no' does not exist on type '{ [name: string]: string; } | null'.ts(2339) const no = event?.queryStringParameters?.no; //It works but I want to use above that. ... } 一起使用。

它现在可用吗?

1 个答案:

答案 0 :(得分:9)

这是因为queryStringParameters可以为null,并且null对象不包含属性no。为此,您需要使用null coalescing operator

const { no } = event?.queryStringParameters ?? { no: null };

请注意,??运算符目前仅可通过 TypeScript 3.7 + 使用,目前还不是标准的JS运算符。有关更多详细信息,请参见有关TypeScripts存储库的相关讨论:https://github.com/microsoft/TypeScript/issues/26578