diff options
Diffstat (limited to 'js')
-rw-r--r-- | js/timers.ts | 1 | ||||
-rw-r--r-- | js/timers_test.ts | 14 |
2 files changed, 14 insertions, 1 deletions
diff --git a/js/timers.ts b/js/timers.ts index ba9a653a8..0d0e1e69a 100644 --- a/js/timers.ts +++ b/js/timers.ts @@ -250,6 +250,7 @@ export function setInterval( /** Clears a previously set timer by id. AKA clearTimeout and clearInterval. */ export function clearTimer(id: number): void { + id = Number(id); const timer = idMap.get(id); if (timer === undefined) { // Timer doesn't exist any more or never existed. This is not an error. diff --git a/js/timers_test.ts b/js/timers_test.ts index 88c5ea5ca..65432d4c5 100644 --- a/js/timers_test.ts +++ b/js/timers_test.ts @@ -1,5 +1,5 @@ // Copyright 2018-2019 the Deno authors. All rights reserved. MIT license. -import { test, assertEquals } from "./test_util.ts"; +import { test, assert, assertEquals } from "./test_util.ts"; function deferred(): { promise: Promise<{}>; @@ -231,3 +231,15 @@ test(async function timeoutBindThis(): Promise<void> { } ); }); + +test(async function clearTimeoutShouldConvertToNumber(): Promise<void> { + let called = false; + const obj = { + valueOf(): number { + called = true; + return 1; + } + }; + clearTimeout((obj as unknown) as number); + assert(called); +}); |