请问为什么在这段代码中,对InterfaceA类型常量的赋值是有效的,但对InterfaceB类型常量的赋值会抛出错误:
interface InterfaceA {
doSomething (data: object): boolean;
}
interface InterfaceB {
doSomething: (data: object) => boolean;
}
function doIt (data: { type: string; }): boolean {
return true;
}
const A: InterfaceA = {
doSomething: doIt
};
const B: InterfaceB = {
doSomething: doIt
};
在我看来,这两个接口定义的是相同的内容,只是符号表示不同。
如果这不是 TypeScript 中的一个 bug 并且有真正的理由,那么我们来看我的第二个问题: 我需要指定 "doSomething" 是可选的,并且可以是函数或 RegExp:
interface InterfaceB {
doSomething?: ((data: object) => boolean) | RegExp;
}`
我该如何使用InterfaceA的符号表示来实现这个?