diff --git a/src/vs/base/browser/touch.ts b/src/vs/base/browser/touch.ts index db93de17f5812..c85416054f010 100644 --- a/src/vs/base/browser/touch.ts +++ b/src/vs/base/browser/touch.ts @@ -192,28 +192,28 @@ export class Gesture extends Disposable { holdTime = Date.now() - data.initialTimeStamp; if (holdTime < Gesture.HOLD_DELAY - && Math.abs(data.initialPageX - arrays.tail(data.rollingPageX)) < 30 - && Math.abs(data.initialPageY - arrays.tail(data.rollingPageY)) < 30) { + && Math.abs(data.initialPageX - arrays.tail(data.rollingPageX)!) < 30 + && Math.abs(data.initialPageY - arrays.tail(data.rollingPageY)!) < 30) { const evt = this.newGestureEvent(EventType.Tap, data.initialTarget); - evt.pageX = arrays.tail(data.rollingPageX); - evt.pageY = arrays.tail(data.rollingPageY); + evt.pageX = arrays.tail(data.rollingPageX)!; + evt.pageY = arrays.tail(data.rollingPageY)!; this.dispatchEvent(evt); } else if (holdTime >= Gesture.HOLD_DELAY - && Math.abs(data.initialPageX - arrays.tail(data.rollingPageX)) < 30 - && Math.abs(data.initialPageY - arrays.tail(data.rollingPageY)) < 30) { + && Math.abs(data.initialPageX - arrays.tail(data.rollingPageX)!) < 30 + && Math.abs(data.initialPageY - arrays.tail(data.rollingPageY)!) < 30) { const evt = this.newGestureEvent(EventType.Contextmenu, data.initialTarget); - evt.pageX = arrays.tail(data.rollingPageX); - evt.pageY = arrays.tail(data.rollingPageY); + evt.pageX = arrays.tail(data.rollingPageX)!; + evt.pageY = arrays.tail(data.rollingPageY)!; this.dispatchEvent(evt); } else if (activeTouchCount === 1) { - const finalX = arrays.tail(data.rollingPageX); - const finalY = arrays.tail(data.rollingPageY); + const finalX = arrays.tail(data.rollingPageX)!; + const finalY = arrays.tail(data.rollingPageY)!; - const deltaT = arrays.tail(data.rollingTimestamps) - data.rollingTimestamps[0]; + const deltaT = arrays.tail(data.rollingTimestamps)! - data.rollingTimestamps[0]; const deltaX = finalX - data.rollingPageX[0]; const deltaY = finalY - data.rollingPageY[0]; @@ -345,8 +345,8 @@ export class Gesture extends Disposable { const data = this.activeTouches[touch.identifier]; const evt = this.newGestureEvent(EventType.Change, data.initialTarget); - evt.translationX = touch.pageX - arrays.tail(data.rollingPageX); - evt.translationY = touch.pageY - arrays.tail(data.rollingPageY); + evt.translationX = touch.pageX - arrays.tail(data.rollingPageX)!; + evt.translationY = touch.pageY - arrays.tail(data.rollingPageY)!; evt.pageX = touch.pageX; evt.pageY = touch.pageY; this.dispatchEvent(evt); diff --git a/src/vs/base/common/arrays.ts b/src/vs/base/common/arrays.ts index f8804af0fe72b..c1e97565a1605 100644 --- a/src/vs/base/common/arrays.ts +++ b/src/vs/base/common/arrays.ts @@ -13,7 +13,7 @@ import { findFirstIdxMonotonousOrArrLen } from './arraysFind'; * @param array The array. * @param n Which element from the end (default is zero). */ -export function tail(array: ArrayLike, n: number = 0): T { +export function tail(array: ArrayLike, n: number = 0): T | undefined { return array[array.length - (1 + n)]; } diff --git a/src/vs/workbench/contrib/bulkEdit/browser/bulkFileEdits.ts b/src/vs/workbench/contrib/bulkEdit/browser/bulkFileEdits.ts index f094897579084..f11d5cb58cdab 100644 --- a/src/vs/workbench/contrib/bulkEdit/browser/bulkFileEdits.ts +++ b/src/vs/workbench/contrib/bulkEdit/browser/bulkFileEdits.ts @@ -363,7 +363,7 @@ export class BulkFileEdits { for (let i = 1; i < edits.length; i++) { const edit = edits[i]; const lastGroup = tail(groups); - if (lastGroup[0].type === edit.type) { + if (lastGroup?.[0].type === edit.type) { lastGroup.push(edit); } else { groups.push([edit]); diff --git a/src/vs/workbench/contrib/inlineChat/browser/inlineChatWidget.ts b/src/vs/workbench/contrib/inlineChat/browser/inlineChatWidget.ts index d2f77ebf34346..bfd7400f7766c 100644 --- a/src/vs/workbench/contrib/inlineChat/browser/inlineChatWidget.ts +++ b/src/vs/workbench/contrib/inlineChat/browser/inlineChatWidget.ts @@ -457,7 +457,7 @@ export class InlineChatWidget { if (!isNonEmptyArray(requests)) { return undefined; } - return tail(requests).response?.response.asString(); + return tail(requests)?.response?.response.asString(); } getChatModel(): IChatModel { diff --git a/src/vs/workbench/services/preferences/common/preferencesModels.ts b/src/vs/workbench/services/preferences/common/preferencesModels.ts index 89022b946b71f..f0c0b5ca0f1c1 100644 --- a/src/vs/workbench/services/preferences/common/preferencesModels.ts +++ b/src/vs/workbench/services/preferences/common/preferencesModels.ts @@ -829,7 +829,7 @@ export class DefaultSettingsEditorModel extends AbstractSettingsModel implements .sort((a, b) => a.order - b.order); const nonEmptyResultGroups = resultGroups.filter(group => group.result.filterMatches.length); - const startLine = tail(this.settingsGroups).range.endLineNumber + 2; + const startLine = tail(this.settingsGroups)!.range.endLineNumber + 2; const { settingsGroups: filteredGroups, matches } = this.writeResultGroups(nonEmptyResultGroups, startLine); const metadata = this.collectMetadata(resultGroups);