refined
1,731
Stars
151
Forks
23
Watchers
79
Open Issues
MIT
许可证
Scala
语言
2015-05-10
创建时间
2026-11-05
最近更新
项目能做什么
refined 是一个 Scala 精细类型库。它通过类型级谓词约束数值范围,解决常规类型无法表达具体取值限制的问题。核心功能包括:在编译期通过宏校验字面量合法性并报错;在运行期校验动态数值;以及提供类型推断规则,支持在编译期安全转换兼容的精细类型。
来源:AI 基于仓库事实生成
· 内容以仓库实际 README 为准
使用说明 查看原始 README 原仓库文档
中文使用说明暂未生成。下面保留原仓库 README 摘录,命令与配置均以原文为准。
原始 README 摘录(英文原文,节选前 3000 字符)
# refined: simple refinement types for Scala
[](https://github.com/fthomas/refined/actions/workflows/ci.yml)
[](http://codecov.io/github/fthomas/refined)
[](https://gitter.im/fthomas/refined?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
[](https://index.scala-lang.org/fthomas/refined/refined)
[](https://javadoc.io/doc/eu.timepit/refined_2.12/0.11.4)
**refined** is a Scala library for refining types with type-level predicates
which constrain the set of values described by the refined type.
It started as a port of the [refined][refined.hs] Haskell library by
[Nikita Volkov](https://github.com/nikita-volkov) (which also provides an excellent
motivation why this kind of library is useful).
The idea of expressing constraints at the type-level as Scala library was first
explored by [Flavio W. Brasil](https://github.com/fwbrasil) in [bond][bond].
A quick example:
```scala
import eu.timepit.refined._
import eu.timepit.refined.api.Refined
import eu.timepit.refined.auto._
import eu.timepit.refined.numeric._
// This refines Int with the Positive predicate and checks via an
// implicit macro that the assigned value satisfies it:
scala> val i1: Int Refined Positive = 5
i1: Int Refined Positive = 5
// If the value does not satisfy the predicate, we get a meaningful
// compile error:
scala> val i2: Int Refined Positive = -5
<console>:22: error: Predicate failed: (-5 > 0).
val i2: Int Refined Positive = -5
^
// There is also the explicit refineMV macro that can infer the base
// type from its parameter:
scala> refineMV[Positive](5)
res0: Int Refined Positive = 5
// Macros can only validate literals because their values are known at
// compile-time. To validate arbitrary (runtime) values we can use the
// refineV function:
scala> val x = 42 // suppose the value of x is not known at compile-time
scala> refineV[Positive](x)
res1: Either[String, Int Refined Positive] = Right(42)
scala> refineV[Positive](-x)
res2: Either[String, Int Refined Positive] = Left(Predicate failed: (-42 > 0).)
```
**refined** also contains inference rules for converting between different
refined types. For example, ``Int Refined Greater[10]`` can be safely
converted to `Int Refined Positive` because all integers greater than ten
are also positive. The type conversion of refined types is a compile-time
operation that is provided by the library:
```scala
scala> val a: Int Refined Greater[5] = 10
a: Int Refined Greater[Int(5)] = 10
// Since every value greater than 5
阅读完整原文
项目深度分析 AI 生成
基于 Refined 的企业级 API 契约与代码生成工具 (SaaS / CLI 工具)
| 产品构想 | 构建与 OpenAPI / JSON Schema / Protobuf 双向转换的工具链,将接口规范自动生成携带 Refined 谓词强类型的 Scala 领域模型,或反向从类型生成完备契约文档。 |
| 核心功能 | OpenAPI 3.0 与 refined 类型的互相转换;自动生成包含边界校验的序列化/反序列化代码(Circe/Play/ZIO集成);边界值自动生成并配套属性测试(Scalacheck)用例。 |
| 目标用户 | 金融科技、电商等对接口传参与契约有严苛校验要求的 Scala 后端团队。 |
| 难度/周期 | 中等 · 1-2 个月 · 成本:极低(主要为本地开发与文档托管,轻量 CI/CD) |
| 收费模式 | 核心 CLI 开源,企业版提供高级契约管理平台或按席位/私有化插件授权收费。 |
| 竞争风险 | 开源社区存在 tapir、smithy4s 等竞争方案,需强调 refined 在精细类型系统的独特性以避免被生态替代。 |
| 依据 | 已验证事实 |
Scala 2 到 Scala 3 Refined 体系迁移与架构咨询服务
| 产品构想 | 针对依赖复杂宏(macro)与 shapeless 的老旧 Scala 项目,提供平滑迁移至 Scala 3(新宏系统、Match Types、Opaque Types)并兼容 refined 或替代方案的专项专家咨询与代维服务。 |
| 核心功能 | 代码库宏兼容性审计;Scala 3 编译性能与类型系统重构方案;Refined 谓词定制化优化与故障排查 SLA 支持。 |
| 目标用户 | 有历史技术包袱、计划升级至 Scala 3 但受阻于复杂类型宏系统的中大型企业。 |
| 难度/周期 | 高 · 按项目交付(单次 2-4 周) · 成本:极低(主要是专家时间成本) |
| 收费模式 | 按咨询人天或工程交付里程碑收取专业服务费(Professional Services)。 |
| 竞争风险 | Scala 整体市场份额相对垂直,且企业升级周期长、成单频次受限。 |
| 依据 | 数据支持的判断 |
高级函数式领域驱动设计(DDD)实战与类型安全内训
| 产品构想 | 围绕 Refined、Cats、Typelevel 生态,打造面向高可靠系统的“类型驱动开发(Type-Driven Development)”企业实战培训体系,帮助团队编写无运行时崩溃的工业级代码。 |
| 核心功能 | Refined 核心机制与性能开销深度剖析;结合 DDD 的强类型边界防御模式实战;常见反模式重构工作坊;课程配套实战代码仓库与课后答疑。 |
| 目标用户 | 需要提升研发工程素养与系统鲁棒性的软件团队、Scala 新入局工程师、IT 培训采购负责人。 |
| 难度/周期 | 低 · 2-3 周课程准备 · 成本:极低(课件与视频录制) |
| 收费模式 | B端企业内训定制采购收费,或在教育平台(如 Udemy/B站/小鹅通)出售录播技术课。 |
| 竞争风险 | Scala 开发者基数较小,纯线上公开课受众面较窄,需精准对接企业内训渠道。 |
| 依据 | AI推测 |
AI 基于仓库公开数据分析生成,含推测成分,不构成收益承诺。
报告会保存到 个人中心
竞品与相似项目 GitHub Search 真实检索
相似项目数据正在完善中,暂不展示(避免误导)
项目优势与风险
| 技术成熟度 | 创建于 2015-05-10,近 30 天仍在推送,发布过 72 个 Release |
| 社区活跃 | Star 1,731 / Fork 151 / Issue 79(数据支持,可自行核实) |
| 许可证 | MIT |
| 主要风险 | 上游项目方向可能变化;同赛道竞争者较多(见竞品表);热度与需求不完全等价 |
安装与使用
此项目未提供 Docker 镜像,安装步骤以原仓库 README 为准(涉及依赖安装与环境配置,对新手门槛较高)。