假设我有一个这样的类(class):
export class User implements Employee {
lanId: string;
firstName: string;
lastName: string;
}
和这样的界面:
export interface Employee {
firstName: string;
lastName: string;
}
然后我想用Sinon来制作一个假用户:
user = sinon.createStubInstance(User);
这会产生如下错误:
Cannot convert type 'SinonStub' to type 'Employee'. Type 'Employee' has non-optional property 'firstName' which is not present on type 'SinonStub'.
Typescript 和诗乃似乎在一起并不愉快。
有没有办法创建一个实现 Typescript 接口(interface)的类的 SinonStub?
最佳答案
user
对象是否标记为“Employee”类型?如果是这样,这个错误就有意义。
sinon.createStubInstance(User) 将返回满足 SinonStub 的对象编译器警告的接口(interface)不符合 Employee 接口(interface)。
如果您不注释 user
的类型,则 typescript 会假设它是 SinonStub,并且不会遇到问题。如果您实际上没有对它进行注释,则该变量可能通过在其他地方使用而隐式地获取了注释。
如果这听起来不太对劲,那么您是否正在尝试完成一些未在问题中完成的事情?
关于javascript - 将 Sinon 与 Typescript 和接口(interface)结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36756244/