【发布时间】:2021-02-09 20:28:32
【问题描述】:
我想用 TypeScript 创建一个断言函数,它会告诉我一个元素是否是一个实例,例如,一个 HTMLElement。
我正在尝试这样构建它:
function assertIntanceOf(
element: unknown,
prototype: ??? // which type should I place here?
): boolean {
return element instanceof prototype;
}
它必须像这样工作:
const elem = document.querySelector('.someClass'); // returns an elem
assertInstanceOf(elem, HTMLElement); // returns true
const elem2 = document.querySelector('.someClassWhichNotExists'); // returns null cause elem with class .someClassWhichNotExists doesn't exist
assertInstanceOf(elem, HTMLElement); // returns false
const someVar = 123; // simply a number
assertInstanceOf(someVar, HTMLElement); //returns false
const someObj = { //just an object
a: 'abc'
}
assertInstanceOf(someVar, HTMLElement); //returns false
我应该为prototype 参数放置哪种类型?
【问题讨论】:
-
为什么不直接使用
typeof运算符? -
@VLAZ
typeof elem在这种情况下将简单地返回一个对象。它与 TypeScript 并不真正兼容 -
抱歉,我指的是
instanceof运算符。我不知道为什么我说typeof。 -
那为什么不直接
instanceof呢?在我看来,您正在尝试重写instanceof?就此而言,您的所有自定义函数都是return a instanceof b -
@VLAZ 我可以使用
typeof,但正如我所问的,我对这里的论点类型感兴趣。我想实践一下这个案例,了解如何正确创建函数
标签: typescript