typescript - 打字稿:如果已经定义了相同的足迹,是否有办法错误地创建界面?
问题描述
我们有相当大的 Angular/Typescript 项目。可以说我定义了接口
export interface RangeNumber {
from: number;
to: number;
}
如果同一项目中的某人尝试创建与 RangeNumber 具有完全相同的属性名称/类型的接口,我希望 typescript 或 linter 抛出错误或警告。例如有人创建:
export interface MyRange {
from: number;
to: number;
}
否则我必须监督开发人员并确保他们使用我们的通用类/接口而不是重新发明轮子。有办法吗?
解决方案
您正在寻找的可能是外部静态分析工具,而不是 TypeScript 编译器本身。
想到的一个例子是 PMD 的复制粘贴检测器功能,它在编码中强制执行 DRY 原则:https ://pmd.github.io/pmd-6.23.0/pmd_userdocs_cpd.html
我敢肯定还有其他类似的工具。但是,我认为它们中的任何一个都不会接近完美,因为考虑到它的主观性,检测这样的相似性是一项艰巨的任务。
例如,您可以有两个相同但名称不同的接口,因为它们用于不同的目的:
interface Range {
from: number;
to: number;
}
interface Coordinate {
x: number;
y: number;
}
在数据类型方面,您可以交换这两者并让代码以完全相同的方式执行。但是保留这两者是有好处的,一个原因是它可以提高代码的可读性并帮助开发人员了解正在发生的事情。
推荐阅读
- javascript - 如何通过 NavDropdown.Item 链接传递 prop 以响应路由器组件
- python - Python 翻译器 pig latin - for 循环迭代
- docker - Docker 在单独的存储库中使用应用程序自动构建
- python - 服务器以 100 Hz 的采样率发送数据,客户端使用 Python 接收和处理时间约为 0.1s
- html - 我发送的一些电子邮件在谷歌日历的 gmail 中生成酒店预订事件,如何避免它?
- mysql - MySQL 上的相同查询需要不到一秒或几十分钟(InnoDB 引擎)
- python - 如何在时间序列中约束 scipy 优化
- microsoft-graph-api - 是否可以提高生成 Microsoft Graph 通话记录通知的速度?
- php - 'A%' 的 Laravel 收集过滤器,就像我们对 'A%' 之类的地方所做的那样
- reactjs - 与 Context Provider API 一起使用时的 Typescript 编译器错误 - React