【发布时间】:2019-11-11 03:10:48
【问题描述】:
我正在从 JavaScript 开发过渡到强制执行 TypeScript 输入的雇主。我为包含典型 .on(event, handler) 的模型创建了一个 Interface。
我的同事想出了一些我认为可以理解的代码,但是它使用了这种嵌套的三元语句,使阅读变得混乱。
interface Model {
...
on<T extends "added" | "failed" | "initialized" | "changed" | "removed"> (
event: T,
handler: T extends "changed" | "removed"
? (T extends "changed"
? (model: Model, entity: Entity, data: object) => void
: (model: Model, id: string) => void)
: (model: Model, entity: Entity) => void,
context?: object
): void
}
这似乎是一种为 handler 参数提供不同签名的方法,基于 event 被传入。
它似乎有效,但我想知道是否有不同的模式来编写它,以便更容易阅读和理解。
【问题讨论】:
-
是否有另一个 Stack Exchange 网站更适合提出这个问题?
-
我可能会索引到映射接口,而不是在这里使用嵌套条件;如果在我使用真正的计算机之前没有人到达这里,我会发布答案。
标签: typescript interface extends