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;
  monthly: HoroscopeItem;
  daily: HoroscopeItem;
  hourly: HoroscopeItem;
};

定義了 運限 對象,包含 大限流年流月流日流時

屬性解釋類型
lunarDate農歷日期string
solarDate陽歷日期string
decadal大限HoroscopeItem
age小限{ index: number, nominalAge: number }
yearly流年HoroscopeItem
monthly流月HoroscopeItem
daily流日HoroscopeItem
hourly流時HoroscopeItem

星盤

Astrolabe

ts
export type Astrolabe = {
  /** 陽歷日期 */
  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[];
};

定義了 星盤 對象

屬性解釋類型
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。詳細創建插件方法見 插件