diff --git a/source/index.ts b/source/index.ts index b667b6b..71a4a32 100644 --- a/source/index.ts +++ b/source/index.ts @@ -66,10 +66,6 @@ const objectTypeNames = [ type ObjectTypeName = typeof objectTypeNames[number]; -function isObjectTypeName(name: unknown): name is ObjectTypeName { - return objectTypeNames.includes(name as ObjectTypeName); -} - const primitiveTypeNames = [ 'null', 'undefined', @@ -102,14 +98,9 @@ const {toString} = Object.prototype; const isOfType = (type: string) => (value: unknown): value is T => typeof value === type; const getObjectType = (value: unknown): ObjectTypeName | undefined => { - const objectTypeName = toString.call(value).slice(8, -1); - - if (/HTML\w+Element/.test(objectTypeName) && is.domElement(value)) { - return 'HTMLElement'; - } - - if (isObjectTypeName(objectTypeName)) { - return objectTypeName; + const objectName = toString.call(value).slice(8, -1); + if (objectName) { + return objectName as ObjectTypeName; } return undefined; diff --git a/test/test.ts b/test/test.ts index 64c84bc..bd62afc 100644 --- a/test/test.ts +++ b/test/test.ts @@ -1275,17 +1275,18 @@ test('is.domElement', t => { assert.domElement({nodeType: 1, nodeName: 'div'}); }); - const tagNames = [ - 'div', - 'input', - 'span', - 'img', - 'canvas', - 'script' - ]; + const htmlTagNameToTypeName = { + div: 'HTMLDivElement', + input: 'HTMLInputElement', + span: 'HTMLSpanElement', + img: 'HTMLImageElement', + canvas: 'HTMLCanvasElement', + script: 'HTMLScriptElement' + }; - for (const tagName of tagNames) { - t.is(is(createDomElement(tagName)), 'HTMLElement'); + for (const [tagName, typeName] of Object.entries(htmlTagNameToTypeName)) { + const domElement = createDomElement(tagName); + t.is(is(domElement), typeName); } });