小编Jen*_*tke的帖子

TypeScript 接口函数属性:有什么区别?

有人可以解释一下,为什么在这段代码中对 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)

对于一个在线演示,请参阅: http://www.typescriptlang.org/play/index.html?ssl=19&ssc=1&pln=1&pc=1#code/JYOwLgpgTgZghgYwgAgJLmvJBBZBvAWAChlkATAewGUKBbCMAC1AHNkAKMuMOALmQoAjAFYQEYAJT9BFCgBsIcEAG5iAX2LFQkWIhTodWCACF8xUpRr0mrfp258BIsZOQBeAHzIZ8xSvWaRDAAriDiwBQg5BSoYBxcPPx4yGAAngAOEPwAzmBQrMrIalLesgpKZkQAkFAMwVBRecEQqkQaRMQIkbnI2PwGmHq4bpVVlnQMzCAs-JSx6q1dID3G-Ri6SKYjhNXj1lMz0fNtrUA

对我来说,两个接口的定义相同,只是符号不同。

如果这不是 TypeScript 中的错误,并且有真正的原因,那么让我们来回答我的第二个问题:我需要指定,“doSomething”是可选的,可以是函数,也可以是 RegExp:

interface InterfaceB {
  doSomething?: ((data: object) => boolean) | RegExp;
}`
Run Code Online (Sandbox Code Playgroud)

我怎么能用InterfaceA的符号实现这一点?

properties interface function typescript

13
推荐指数
1
解决办法
9657
查看次数

标签 统计

function ×1

interface ×1

properties ×1

typescript ×1