所以我正在编写一些测试用例。我有一个类(class)如下。
export default class DateProcessor {
requestHandler = (req, res) => {
//code
}
}
现在我正在编写一个单元测试来查看 DateProcessor 的类型是否为类
import {default as processor} from './getDatesProcessor';
describe('Date Processor', () => {
it('should be a class', () => {
expect(typeof processor).toBe('class');
})
});
但是测试用例失败了,因为我将类型作为函数而不是类获取。 我想知道这是否是预期的行为,或者我没有做正确的事情。
最佳答案
您问题的答案是:是的,这是预期行为
说明:
在 JavaScript 中,没有类这样的东西。 class
关键字只是一种语法,可以更轻松地根据最佳实践创建原型(prototype)。事实上,所有这些类实际上都是函数。您可以使用 typeof
关键字进行检查,该关键字在应用于类时将返回function
。此外,这在 JavaScript 中也是可能的:
function Person(name) {
this.name = name;
}
Person.prototype.getName = function () {
return this.name;
}
class Student extends Person {
constructor(name, studies) {
super(name);
this.studies = studies;
}
getStudies() {
return this.studies;
}
}
const s = new Student('John', 'Maths');
console.log(s.getName(), s.getStudies());
有关 JS 中的类的更多信息,here
关于javascript - 关于 typeof class 的澄清,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58835120/