有人可以解释一下,为什么在这段代码中对 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
};
Run Code Online (Sandbox Code Playgroud)
对我来说,两个接口的定义相同,只是符号不同。
如果这不是 TypeScript 中的错误,并且有真正的原因,那么让我们来回答我的第二个问题:我需要指定,“doSomething”是可选的,可以是函数,也可以是 RegExp:
interface InterfaceB {
doSomething?: ((data: object) => boolean) | RegExp;
}`
Run Code Online (Sandbox Code Playgroud)
我怎么能用InterfaceA的符号实现这一点?