Skip to content

项目简介

为什么创建这个项目?

中国传统文化中,亲戚关系错综复杂。"爸爸的哥哥的老婆"应该叫什么?"外婆和奶奶之间是什么关系?"这些问题常常让人困惑。

优秀的开源项目 mumuy/relationship 已经很好地解决了这个问题,但在实际使用中,我们发现了一些痛点:

遇到的问题

React Native 移动端 使用原版 JS 包时,会遇到以下错误:

ERROR [RangeError: Property storage exceeds 196607 properties]

这是由于 JavaScriptCore 引擎对对象属性数量的限制(约 196607 个),而原版 JS 包在初始化时会创建大量对象属性。

解决方案

relationship-ts 通过以下优化解决了这个问题:

优化说明
Map 数据结构使用 Map 代替 Object 存储数据,O(1) 查找性能
LRU 缓存实现智能缓存机制,重复查询性能提升 60 倍
TypeScript完整的类型定义,开发体验更好
更小体积优化后的包体积减少约 5%

项目特点

完整的类型支持

ts
import relationship, type { RelationshipOptions, Sex, OutputType } from 'relationship-ts';

// 类型会被自动推导
const options: RelationshipOptions = {
  text: '爸爸的妈妈',
  sex: 1,
  type: 'default',
};

高性能

指标结果
冷启动 QPS~14,000 req/s
热启动 QPS~30,000 req/s
平均耗时(缓存)0.033 ms
性能提升2.1 倍

移动端兼容

完美支持 React Native,不再出现属性超限错误。

适用场景

  • 家庭应用 - 构建家庭社交、族谱工具
  • 游戏应用 - 需要处理中文亲属关系的游戏
  • 学习工具 - 了解中国传统文化中的亲戚关系
  • 日常查询 - 快速查询复杂的亲戚称谓

下一步

基于 MIT 许可发布