类型定义
前言
本页介绍了 iztro
中的类型定义,除了 国际化类型 被定义在了 i18n 文件夹内,其他类型都定义在 types 文件夹内。
你可以使用如下代码引入 国际化类型
:
import { HeavenlyStemName } from "iztro/lib/i18n";
而当你需要引入其他类型的时候,则需要:
import { Palace } from "iztro/lib/data/types";
提示
如果你发现 翻译
和 类型定义
中有不对或者不恰当的地方,可以在 这里 创建 Issue 指出,非常感谢。
国际化类型
iztro
为了支持国际化输入输出,对需要进行参数输入输出的数据进行了多语言定义,在输入的时候,你可以输入 任意语言 的值,比如在需要传 HeavenlyStemName
的地方,你可以传入 甲
,也可以传入 갑
或者 jia
。
比如在调用getHoroscopeStar()
方法的时候,你可以以中文的干支作为参数:
import { getHoroscopeStar } from "iztro/lib/star";
getHoroscopeStar("甲", "子", "decadal");
也可以用其他语言的翻译作为参数甚至中文和外文混合使用,也是可以的:
import { getHoroscopeStar } from "iztro/lib/star";
getHoroscopeStar("갑", "zi", "decadal");
当然输出的时候会统一按照你指定的语言进行输出。你可以在调用上述方法之前设置你的输出语言:
import { setLanguage } from "iztro/lib/i18n";
setLanguage("ko-KR");
const horoscopeStar = getHoroscopeStar("甲", "zi", "decadal");
此时 horoscopeStar
的输出结果会是 韩文
的。
horoscopeStar
输出结果
[
[
{
"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
export type Language = `zh-CN` | `zh-TW` | `en-US` | `ko-KR` | `ja-JP`;
定义了支持的 语言
,目前支持的语言有:
zh-CN
:简体中文zh-TW
:繁體中文en-US
:Englishko-KR
:한국어ja-JP
:日本語
Scope
export type Scope = "origin" | "decadal" | "yearly";
定义了星曜的 作用范围
,用于区分本命星曜和流耀:
origin
:本命星曜decadal
:大限星曜yearly
:流年星曜
StarType
export type StarType =
| "major"
| "soft"
| "tough"
| "adjective"
| "flower"
| "helper"
| "lucun"
| "tianma";
定义了星曜 类型
,其中 桃花星
和 解神星
(包含 年解
)虽然是杂耀,但是在解盘中有着特殊的意义,所以单独归类,禄存
和 天马
二辅星也是比较特殊,所以单独归类:
major
:主星soft
:吉星tough
:煞星adjective
:杂耀flower
:桃花helper
:解神lucun
:禄存tianma
:天马
星曜
Star
export type Star = {
name: StarName;
type: StarType;
scope: Scope;
brightness?: Brightness;
mutagen?: Mutagen;
};
定义了 星曜
对象
属性 | 解释 | 类型 |
---|---|---|
name | 星曜名字 | StarName |
type | 星曜类型 | StarType |
scope | 作用范围 | Scope |
brightness | 星曜亮度 | Brightness |
mutagen | 四化 | Mutagen |
宫位
SoulAndBody
export type SoulAndBody = {
soulIndex: number;
bodyIndex: number;
heavenlyStemOfSoul: HeavenlyStemName;
earthlyBranchOfSoul: EarthlyBranchName;
};
定义了 命宫
和 身宫
位置信息
属性 | 解释 | 类型 |
---|---|---|
soulIndex | 命宫索引 | number |
bodyIndex | 身宫索引 | number |
heavenlyStemOfSoul | 命宫天干 | HeavenlyStemName |
earthlyBranchOfSoul | 命宫地支 | EarthlyBranchName |
Palace
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
export type SurroundedPalaces = {
target: IFunctionalPalace;
opposite: IFunctionalPalace;
wealth: IFunctionalPalace;
career: IFunctionalPalace;
};
定义了 三方四正
对象
属性 | 解释 | 类型 |
---|---|---|
target | 本宫 | IFunctionalPalace |
opposite | 对宫 | IFunctionalPalace |
wealth | 财帛位 | IFunctionalPalace |
career | 官禄位 | IFunctionalPalace |
运限
HoroscopeItem
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
export type Decadal = {
range: [number, number];
heavenlyStem: HeavenlyStemName;
earthlyBranch: EarthlyBranchName;
};
定义了星盘的 大限
,此类型主要用在 Palace 内。
属性 | 解释 | 类型 |
---|---|---|
range | 大限起止年龄 [起始年龄 , 截止年龄 ] | [number, number] |
heavenlyStem | 大限天干 | HeavenlyStemName |
earthlyBranch | 大限地支 | EarthlyBranchName |
Horoscope
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
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.3 | 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[] |
配置和插件 ^2.3.0
ConfigMutagens
定义了全局配置中的 四化
参数。
type ConfigMutagens = Partial<Record<HeavenlyStemName, StarName[]>>;
ConfigBrightness
定义了全局配置中的 亮度
参数。
type ConfigBrightness = Partial<Record<StarName, Brightness[]>>;
Config
定义了全局参数对象。
type Config = {
// 星耀四化配置
mutagens?: ConfigMutagens;
// 星耀亮度配置
brightness?: ConfigBrightness;
// 年分割点配置
yearDivide?: 'normal' | 'exact';
// 运限分割点配置(^v2.4.3)
horoscopeDivide?: 'normal' | 'exact'
};
其中当 yearDivide
和 horoscopeDivide
为 normal
时,会以正月初一为分界,为 exact
时会以立春为分界。
Plugin
定义了插件类型。实际上,插件就是一个函数。
type Plugin = () => void;
提示
插件方法会隐式的接受一个 this
参数,该参数类型为 T extends FunctionalAstrolabe
。详细创建插件方法见 插件