Skip to content
页内导航

类型定义

前言

本页介绍了 iztro 中的类型定义,除了 国际化类型 被定义在了 i18n 文件夹内,其他类型都定义在 types 文件夹内。

你可以使用如下代码引入 国际化类型:

ts
import { HeavenlyStemName } from "iztro/lib/i18n";

而当你需要引入其他类型的时候,则需要:

ts
import { Palace } from "iztro/lib/data/types";

提示

如果你发现 翻译类型定义 中有不对或者不恰当的地方,可以在 这里 创建 Issue 指出,非常感谢。

国际化类型

iztro 为了支持国际化输入输出,对需要进行参数输入输出的数据进行了多语言定义,在输入的时候,你可以输入 任意语言 的值,比如在需要传 HeavenlyStemName 的地方,你可以传入 ,也可以传入 或者 jia

比如在调用getHoroscopeStar()方法的时候,你可以以中文的干支作为参数:

ts
import { getHoroscopeStar } from "iztro/lib/star";

getHoroscopeStar("", "", "decadal");

也可以用其他语言的翻译作为参数甚至中文和外文混合使用,也是可以的:

ts
import { getHoroscopeStar } from "iztro/lib/star";

getHoroscopeStar("", "zi", "decadal");

当然输出的时候会统一按照你指定的语言进行输出。你可以在调用上述方法之前设置你的输出语言:

ts
import { setLanguage } from "iztro/lib/i18n";

setLanguage("ko-KR");

const horoscopeStar = getHoroscopeStar("", "zi", "decadal");

此时 horoscopeStar 的输出结果会是 韩文 的。

horoscopeStar 输出结果
json
[
  [
    {
      "name": "록존(십년)",
      "type": "lucun",
      "scope": "decadal"
    },
    {
      "name": "천마(십년)",
      "type": "tianma",
      "scope": "decadal"
    }
  ],
  [
    {
      "name": "경양(십년)",
      "type": "tough",
      "scope": "decadal"
    },
    {
      "name": "홍란(십년)",
      "type": "flower",
      "scope": "decadal"
    }
  ],
  [],
  [
    {
      "name": "문창(십년)",
      "type": "soft",
      "scope": "decadal"
    }
  ],
  [],
  [
    {
      "name": "천월(십년)",
      "type": "soft",
      "scope": "decadal"
    }
  ],
  [],
  [
    {
      "name": "문곡(십년)",
      "type": "soft",
      "scope": "decadal"
    },
    {
      "name": "천희(십년)",
      "type": "flower",
      "scope": "decadal"
    }
  ],
  [],
  [],
  [],
  [
    {
      "name": "천괴(십년)",
      "type": "soft",
      "scope": "decadal"
    },
    {
      "name": "타라(십년)",
      "type": "tough",
      "scope": "decadal"
    }
  ]
]

HeavenlyStemName

定义了十天干

| | | | | | | | |


EarthlyBranchName

定义了 十二地支,地支中的 英文和天干中的 相同,为了解决国际化时的冲突,固将地支中的 翻译成了 woo

| | | | | | | | | | |


PalaceName

定义了紫微斗数宫位的 名称

命宫 | 身宫 | 兄弟 | 夫妻 | 子女 | 财帛 | 疾厄 | 迁移 | 仆役 | 官禄 | 田宅 | 福德 | 父母 | 来因


Brightness

定义了星曜的 亮度

"" | | | | | | |


Mutagen

定义了紫微斗数中 四化星 的名称

| | |


StarName

定义了紫微斗数中 星曜 的名称,包括 流耀

紫微 | 天机 | 太阳 | 武曲 | 天同 | 廉贞 | 天府 | 太阴 | 贪狼 | 巨门 | 天相 | 天梁 | 七杀 | 破军 | 左辅 | 右弼 | 文昌 | 文曲 | 禄存 | 天马 | 擎羊 | 陀罗 | 火星 | 铃星 | 天魁 | 天钺 | 地空 | 地劫 | 天空 | 天刑 | 天姚 | 解神 | 阴煞 | 天喜 | 天官 | 天福 | 天哭 | 天虚 | 龙池 | 凤阁 | 红鸾 | 孤辰 | 寡宿 | 蜚廉 | 破碎 | 台辅 | 封诰 | 天巫 | 天月 | 三台 | 八座 | 恩光 | 天贵 | 天才 | 天寿 | 截空 | 旬中 | 旬空 | 空亡 | 截路 | 月德 | 天伤 | 天使 | 天厨 | 长生 | 沐浴 | 冠带 | 临官 | 帝旺 | | | | | | | | 博士 | 力士 | 青龙 | 小耗 | 将军 | 奏书 | 飞廉 | 喜神 | 病符 | 大耗 | 伏兵 | 官府 | 岁建 | 晦气 | 丧门 | 贯索 | 官符 | 龙德 | 白虎 | 天德 | 吊客 | 将星 | 攀鞍 | 岁驿 | 息神 | 华盖 | 劫煞 | 灾煞 | 天煞 | 指背 | 咸池 | 月煞 | 亡神 | 运魁 | 运钺 | 运昌 | 运曲 | 运鸾 | 运喜 | 运禄 | 运羊 | 运陀 | 运马 | 流魁 | 流钺 | 流昌 | 流曲 | 流鸾 | 流喜 | 流禄 | 流羊 | 流陀 | 流马 | 年解


FiveElementsClassName

定义了紫微斗数中 五行局 的名称

水二局 | 木三局 | 金四局 | 土五局 | 火六局


GenderName

定义 性别 的名称

|

通用

Language

ts
export type Language = `zh-CN` | `zh-TW` | `en-US` | `ko-KR` | `ja-JP`;

定义了支持的 语言,目前支持的语言有:

  • zh-CN:简体中文
  • zh-TW:繁體中文
  • en-US:English
  • ko-KR:한국어
  • ja-JP:日本語

Scope

ts
export type Scope = "origin" | "decadal" | "yearly";

定义了星曜的 作用范围,用于区分本命星曜和流耀:

  • origin:本命星曜
  • decadal:大限星曜
  • yearly:流年星曜

StarType

ts
export type StarType =
  | "major"
  | "soft"
  | "tough"
  | "adjective"
  | "flower"
  | "helper"
  | "lucun"
  | "tianma";

定义了星曜 类型,其中 桃花星解神星(包含 年解)虽然是杂耀,但是在解盘中有着特殊的意义,所以单独归类,禄存天马 二辅星也是比较特殊,所以单独归类:

  • major:主星
  • soft:吉星
  • tough:煞星
  • adjective:杂耀
  • flower:桃花
  • helper:解神
  • lucun:禄存
  • tianma:天马

星曜

Star

ts
export type Star = {
  name: StarName;
  type: StarType;
  scope: Scope;
  brightness?: Brightness;
  mutagen?: Mutagen;
};

定义了 星曜 对象

属性解释类型
name星曜名字StarName
type星曜类型StarType
scope作用范围Scope
brightness星曜亮度Brightness
mutagen四化Mutagen

宫位

SoulAndBody

ts
export type SoulAndBody = {
  soulIndex: number;
  bodyIndex: number;
  heavenlyStemOfSoul: HeavenlyStemName;
  earthlyBranchOfSoul: EarthlyBranchName;
};

定义了 命宫身宫 位置信息

属性解释类型
soulIndex命宫索引number
bodyIndex身宫索引number
heavenlyStemOfSoul命宫天干HeavenlyStemName
earthlyBranchOfSoul命宫地支EarthlyBranchName

Palace

ts
export type Palace = {
  name: PalaceName;
  isBodyPalace: boolean;
  isOriginalPalace: boolean;
  heavenlyStem: HeavenlyStemName;
  earthlyBranch: EarthlyBranchName;
  majorStars: Star[];
  minorStars: Star[];
  adjectiveStars: Star[];
  changsheng12: StarName;
  boshi12: StarName;
  jiangqian12: StarName;
  suiqian12: StarName;
  decadal: Decadal;
  ages: number[];
};

定义了 宫位 对象

属性解释类型
name宫位名称PalaceName
isBodyPalace是否身宫boolean
isOriginalPalace是否来因宫boolean
heavenlyStem宫位天干HeavenlyStemName
earthlyBranch宫位地支EarthlyBranchName
majorStars主星Star[]
minorStars辅星Star[]
adjectiveStars杂耀Star[]
changsheng12长生 12 神StarName
boshi12博士 12 神StarName
jiangqian12流年将前 12 神StarName
suiqian12流年岁前 12 神StarName
decadal大限Decadal
ages小限number[]

SurroundedPalaces

ts
export type SurroundedPalaces = {
  target: IFunctionalPalace;
  opposite: IFunctionalPalace;
  wealth: IFunctionalPalace;
  career: IFunctionalPalace;
};

定义了 三方四正 对象

属性解释类型
target本宫IFunctionalPalace
opposite对宫IFunctionalPalace
wealth财帛位IFunctionalPalace
career官禄位IFunctionalPalace

运限

HoroscopeItem

ts
export type HoroscopeItem = {
  index: number;
  name: string;
  heavenlyStem: HeavenlyStemName;
  earthlyBranch: EarthlyBranchName;
  palaceNames: PalaceName[];
  mutagen: StarName[];
  stars?: Star[][];
};

定义了 运限 对象

属性解释类型
index所在宫位的索引number
name ^1.2.3运限的名称string
heavenlyStem运限天干HeavenlyStemName
earthlyBranch运限地支EarthlyBranchName
palaceNames运限的十二宫PalaceName[]
mutagen四化星StarName[]
stars流耀Star[][]

Decadal

ts
export type Decadal = {
  range: [number, number];
  heavenlyStem: HeavenlyStemName;
  earthlyBranch: EarthlyBranchName;
};

定义了星盘的 大限,此类型主要用在 Palace 内。

属性解释类型
range大限起止年龄 [起始年龄, 截止年龄][number, number]
heavenlyStem大限天干HeavenlyStemName
earthlyBranch大限地支EarthlyBranchName

Horoscope

ts
export type Horoscope = {
  lunarDate: string;
  solarDate: string;
  decadal: HoroscopeItem;
  age: {
    index: number;
    nominalAge: number;
  };
  yearly: HoroscopeItem & { 
    yearlyDecStar: { 
      jiangqian12: StarName[]; 
      suiqian12: StarName[] 
      } 
    };
  monthly: HoroscopeItem;
  daily: HoroscopeItem;
  hourly: HoroscopeItem;
};

定义了 运限 对象,包含 大限流年流月流日流时

属性解释类型
lunarDate农历日期string
solarDate阳历日期string
decadal大限HoroscopeItem
age小限{ index: number, nominalAge: number }
yearly流年HoroscopeItem & { yearlyDecStar: { jiangqian12: StarName[]; suiqian12: StarName[] } }
monthly流月HoroscopeItem
daily流日HoroscopeItem
hourly流时HoroscopeItem

星盘

Astrolabe

ts
export type Astrolabe = {
  gender: GenderName;
  solarDate: string;
  lunarDate: string;
  chineseDate: string;
  rawDates: {
    lunarDate: LunarDate;
    chineseDate: HeavenlyStemAndEarthlyBranchDate;
  };
  time: string;
  timeRange: string;
  sign: string;
  zodiac: string;
  earthlyBranchOfSoulPalace: EarthlyBranchName;
  earthlyBranchOfBodyPalace: EarthlyBranchName;
  soul: StarName;
  body: StarName;
  fiveElementsClass: FiveElementsClassName;
  palaces: IFunctionalPalace[];
};

定义了 星盘 对象

属性解释类型
gender性别 ^2.0.3GenderName
solarDate阳历日期string
lunarDate农历日期string
chineseDate干支纪年日期string
rawDates原始日期数据,用于今后内部方法使用{ lunarDate: LunarDate, chineseDate: HeavenlyStemAndEarthlyBranchDate }
time时辰string
timeRange时辰对应的时间段string
sign星座string
zodiac生肖string
earthlyBranchOfSoulPalace命宫地支EarthlyBranchName
earthlyBranchOfBodyPalace身宫地支EarthlyBranchName
soul命主StarName
body身主StarName
fiveElementsClass五行局FiveElementsClassName
palaces十二宫数据IFunctionalPalace[]

配置和插件 ^2.3.0

ConfigMutagens

定义了全局配置中的 四化 参数。

ts
type ConfigMutagens = Partial<Record<HeavenlyStemName, StarName[]>>;

ConfigBrightness

定义了全局配置中的 亮度 参数。

ts
type ConfigBrightness = Partial<Record<StarName, Brightness[]>>;

Config

定义了全局参数对象。

ts
type Config = {
  // 星耀四化配置
  mutagens?: ConfigMutagens;
  // 星耀亮度配置
  brightness?: ConfigBrightness;
  // 年分割点配置
  yearDivide?: 'normal' | 'exact';
  // 运限分割点配置(^v2.4.3)
  horoscopeDivide?: 'normal' | 'exact'
};

其中当 yearDividehoroscopeDividenormal 时,会以正月初一为分界,为 exact 时会以立春为分界。

Plugin

定义了插件类型。实际上,插件就是一个函数。

ts
type Plugin = () => void;

提示

插件方法会隐式的接受一个 this 参数,该参数类型为 T extends FunctionalAstrolabe。详细创建插件方法见 插件