gpt4 book ai didi

带有 "callback type"的 TypeScript 索引类型约束工作不正常?

转载 作者:行者123 更新时间:2023-12-04 01:17:12 24 4
gpt4 key购买 nike

我不明白为什么这会给我一个错误(使用编译器选项 "strict": true)。

class EventX {
public type: string

constructor(type: string) {
this.type = type
}
}

class ClickEvent extends EventX {
public x: number

constructor(type: string, x: number) {
super(type);
this.x = x;
}
}

interface Events {
[eventType: string]: (event: EventX) => any

click: (e: ClickEvent) => any // TS2411: Property 'click' of type '(e: ClickEvent) => any' is not assignable to string index type '(event: EventX) => any'.
}

顺便说一句,这很好用

interface Events {
[eventType: string]: EventX

click: ClickEvent
}

所以我认为是这部分 (event: EventX) => any 导致了问题。但这有什么问题呢?我该如何解决?

最佳答案

问题是索引签名必须包含值可能具有的所有可能类型:

interface Events {
click: (event: ClickEvent) => any;
[eventType: string]: ((event: EventX) => any) | ((event: ClickEvent) => any);
}

这是由于所有键都包含在索引签名 [x: string] 中,因此所有键都经过一致性检查 - 因为 (event: ClickEvent) => any 不可分配给 ( event: EventX) => 任何它抛出的错误

编辑:Mihályi Zoltán 有更好的解释。

关于带有 "callback type"的 TypeScript 索引类型约束工作不正常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63144214/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com