typescript - 更新 d3 转换或选择的函数的正确类型
问题描述
我正在尝试为某些更新某些 svg 元素位置的 TypeScript d3 代码找出正确的类型。代码既可以在没有过渡的情况下运行(即它应该立即更新),也可以在有过渡的情况下运行。我编写了一个辅助方法来执行更新,但我无法确定正确的类型。我的代码是这样工作的:
const circles = group.selectAll('circle').data(points);
if (transitionsEnabled) {
updateCircles(circles.transition().duration(1000));
} else {
updateCircles(circles);
}
function updateCircles(circles: d3.Selection<d3.BaseType, Point, d3.BaseType, {}> {
circles
.attr('cx', (d: Point) => d.x)
.attr('cy', (d: Point) => d.y)
.attr('r', 5);
}
这给了我一个错误:Argument of type 'Transition<BaseType, Point, BaseType, {}>' is not assignable to parameter of type 'Selection<BaseType, Point, BaseType, {}>
在启用转换的调用上。
将函数参数的类型切换为 Transition 会产生等效错误。我可以通过给函数参数一个类型来解决它
d3.Selection<d3.BaseType, Point, d3.BaseType, {}>|d3.Transition<d3.BaseType, Point, d3.BaseType, {}>
但这似乎很难看。有没有更好的方法来输入这个方法?我可以创建一个类型别名来使事情变得更顺畅,但这似乎应该已经存在。
解决方案
推荐阅读
- android - Android单元测试如何测试observable和Subscriber
- c# - 使用实体框架时 ASP.NET Web 应用程序重新启动
- laravel - 有时|必需|电子邮件和有时|电子邮件验证规则之间的区别
- angular - Word 文档中未列出 Office.js API 样式
- c# - 如果我单击空白区域,C# DataGrid ContextMenuOpening 错误
- shell - 通过 shell 脚本调用 Snowsql 程序
- php - PHP 安全测试为 GetHTMLValueString 提供了严重的 Reflected XSS 警告,我该如何解决?
- css - 从同一个 SCSS 文件导入嵌套类
- javascript - 405 - Uncaught (in promise) 错误:请求失败,状态码为 405
- java - 是否可以在 Spring Boot 中全局管理错误?