Skip to content

宮位

前言

紫微鬥數中一共有 十二 個宮位,叫做 十二人事宮,囊括了與人有關的其他人和事物,這十二宮按順序分別是 命宮兄弟宮夫妻宮子女宮財帛宮疾厄宮遷移宮仆役宮官祿宮田宅宮福德宮父母宮。除了這展示在 星盤 裏的十二宮以外,紫微鬥數還有三個隱藏宮位,它們分別是 身宮來因宮暗合宮。每一個宮位有著它特殊的意義,但本頁不詳細展開來敘述。如果你對紫微鬥數的宮位沒有概念,或者想深入研究,可以點擊 宮位系統 查看詳細資料。與宮位地支順時針排列相反,宮位名稱是按逆時針排列的。如下面表格所示:

田宅官祿仆役遷移
福德中宮疾厄
父母財帛
命宮兄弟夫妻子女

以上表格只是一個例子,命宮 的位置會根據你的 出生日期出生時間 的不同而不同,它可能出現在上述任何一個宮位,但這個順序是不會變的。

宮位其實是 兩個概念組成的,通過 出生日期出生時間 計算出來的,叫 ,所以你星盤中的 財帛宮 位置在本命盤中是固定的,如果你不知道什麽叫 本命盤,我們強烈建議你點擊 基礎知識掃盲 學習。 則是一個 相對 位置,比如 夫妻宮財帛位遷移宮。這聽起來有些繞,好消息是,你不需要記憶這些燒腦的信息,只需要有這麽一個概念就可以了。

功能類定義

開發建議

因為宮位是基於星盤而存在的,所以我們並不推薦你手動 new 一個宮位對象,而是使用星盤靜態方法返回的對象使用。星盤的 palaces 屬性包含了十二宮的數據,為了和地支的順序保持一致,它是從 寅宮 開始按照地支順序順時針排列的。

ts
import { astro } from "iztro";

const astrolabe = astro.astrolabeBySolarDate("2000-8-16", 2, "女", true, "zh-CN");

你可以有幾種方式從上述 astrolabe 變量裏獲取到目標宮位,請根據實際需求使用:

  1. 通過 palaces 的下標獲取

    ts
    // 獲取卯宮宮位
    const palace = astrolabe.palaces[1];
  2. 通過 FunctionalAstrolabe 類的 palace() 方法傳入宮位 索引 獲取

    ts
    // 獲取卯宮宮位
    const palace = astrolabe.palace(1);
  3. 通過 FunctionalAstrolabe 類的 palace() 方法傳入宮位 名稱 獲取

    ts
    // 獲取命宮
    const palace = astrolabe.palace("命宮");

FunctionalPalace


implements IFuncionalPalace extends Palace

該類所有屬性都是繼承自 Palace,然後在接口內定義了一些方法用於對星曜進行分析。

  • 接口定義

    ts
    interface IFunctionalPalace extends Palace {
      has: (stars: StarName[]) => boolean;
      notHave: (stars: StarName[]) => boolean;
      hasOneOf: (stars: StarName[]) => boolean;
      hasMutagen: (mutagen: Mutagen): boolean;
      notHaveMutagen: (mutagen: Mutagen): boolean;
      isEmpty: (excludeStars?: StarName[]) => boolean;
      astrolabe: () => IFunctionalAstrolabe | undefined;
      fliesTo: (to: number | PalaceName, withMutagens: Mutagen | Mutagen[]) => boolean;
      fliesOneOfTo: (to: number | PalaceName, withMutagens: Mutagen[]) => boolean;
      notFlyTo: (to: number | PalaceName, withMutagens: Mutagen | Mutagen[]) => boolean;
      selfMutaged: (withMutagens: Mutagen | Mutagen[]) => boolean;
      selfMutagedOneOf: (withMutagens?: Mutagen[]) => boolean;
      notSelfMutaged: (withMutagens?: Mutagen | Mutagen[]) => boolean;
      mutagedPlaces: () => (IFunctionalPalace | undefined)[];
    }
  • 屬性

    參考 Palace

  • 方法

    has() ^1.0.0

    • 用途

      判斷某個宮位內是否有傳入的 星曜,要 所有 星曜 都在 宮位內才會返回 true

    • 定義

      ts
      type has = (stars: StarName[]) => boolean;
    • 參數

      參數類型是否必填默認值說明
      starsStarName[]true-星曜名稱,可以包含主星、輔星、雜耀
    • 返回值

      boolean

    • 示例

      如果你想查看 命宮 是否有 紫微星右弼星

      ts
      const palace = astrolabe.palace("命宮");
      const result = palace.has(["紫微", "右弼"]);

      當然你也可以使用 鏈式調用 來簡化代碼

      ts
      const result = astrolabe.palace("命宮").has(["紫微", "右弼"]);

    notHave() ^1.0.0

    • 用途

      判斷某個宮位內是否沒有傳入的 星曜,要所有星曜 都不在 宮位內才會返回 true

    • 定義

      ts
      type notHave = (stars: StarName[]) => boolean;
    • 參數

      參數類型是否必填默認值說明
      starsStarName[]true-星曜名稱,可以包含主星、輔星、雜耀
    • 返回值

      boolean

    • 示例

      如果你想查看 命宮 是沒有 地空星地劫星

      ts
      const palace = astrolabe.palace("命宮");
      const result = palace.notHave(["地空", "地劫"]);

      當然你也可以使用 鏈式調用 來簡化代碼

      ts
      const result = astrolabe.palace("命宮").notHave(["地空", "地劫"]);

    hasOneOf() ^1.0.0

    • 用途

      判斷某個宮位內是否有傳入 星曜 的其中一個,只要 命中一個 就會返回 true

    • 定義

      ts
      type hasOneOf = (stars: StarName[]) => boolean;
    • 參數

      參數類型是否必填默認值說明
      starsStarName[]true-星曜名稱,可以包含主星、輔星、雜耀
    • 返回值

      boolean

    • 示例

      如果你想查看 命宮 是否有 天魁星天鉞星

      ts
      const palace = astrolabe.palace("命宮");
      const result = palace.hasOneOf(["天魁", "天鉞"]);

      當然你也可以使用 鏈式調用 來簡化代碼

      ts
      const result = astrolabe.palace("命宮").hasOneOf(["天魁", "天鉞"]);

    hasMutagen() ^1.2.0

    • 用途

      判斷宮位內是否有生年四化

    • 定義

      ts
      type hasMutagen = (mutagen: Mutagen) => boolean;
    • 參數

      參數類型是否必填默認值說明
      mutagenMutagentrue-四化名稱【祿|權|科|忌】
    • 返回值

      boolean

    • 示例

      如果你想查看 命宮 是否有 化祿

      ts
      const palace = astrolabe.palace("命宮");
      const result = palace.hasMutagen("祿");

      當然你也可以使用 鏈式調用 來簡化代碼

      ts
      const result = astrolabe.palace("命宮").hasMutagen("祿");

    notHaveMutagen() ^1.2.0

    • 用途

      判斷宮位內是否沒有生年四化

    • 定義

      ts
      type notHaveMutagen = (mutagen: Mutagen) => boolean;
    • 參數

      參數類型是否必填默認值說明
      mutagenMutagentrue-四化名稱【祿|權|科|忌】
    • 返回值

      boolean

    • 示例

      如果你想查看 命宮 是不是沒有 化忌

      ts
      const palace = astrolabe.palace("命宮");
      const result = palace.notHaveMutagen("忌");

      當然你也可以使用 鏈式調用 來簡化代碼

      ts
      const result = astrolabe.palace("命宮").notHaveMutagen("忌");

    isEmpty() ^2.0.6

    • 用途

      判斷一個宮位是否為空宮(沒有主星),有些派別在宮位內有某些星曜的情況下,是不會將該宮位判斷為空宮的。所以加入一個參數來傳入星曜。

    • 定義

      ts
      type isEmpty = (excludeStars?: StarName[]) => boolean;
    • 參數

      參數類型是否必填默認值說明
      excludeStarsStarName[]false-星曜名稱數組
    • 返回值

      boolean

    astrolabe() ^2.1.0

    • 用途

      獲取當前宮位所在的星盤對象。

    • 定義

      ts
      type astrolabe = () => IFunctionalAstrolabe | undefined;
    • 參數

    • 返回值

    IFunctionalAstrolabe | undefined;

    fliesTo() ^2.1.0

    • 用途

      判斷是否從源宮位飛化到目標宮位,四化可傳入一個數組或者一個字符串,傳入四化全部飛化到目標宮位即返回 true

    • 定義

      ts
      type fliesTo = (
        to: number | PalaceName, 
        withMutagens: Mutagen | Mutagen[]
      ) => boolean;
    • 參數

      參數類型是否必填默認值說明
      tonumber | PalaceNametrue-目標宮位索引或名稱
      withMutagensMutagen |Mutagen[]true-四化(祿、權、科、忌)
    • 返回值

      boolean

    fliesOneOfTo() ^2.1.0

    • 用途

      判斷是否從源宮位飛化其中一顆四化星到目標宮位,傳入四化只要有一顆飛化到目標宮位即返回 true

    • 定義

      ts
      type fliesOneOfTo = (
        to: number | PalaceName, 
        withMutagens: Mutagen | Mutagen[]
      ) => boolean;
    • 參數

      參數類型是否必填默認值說明
      tonumber | PalaceNametrue-目標宮位索引或名稱
      withMutagensMutagen |Mutagen[]true-四化(祿、權、科、忌)
    • 返回值

      boolean

    notFlyTo() ^2.1.0

    • 用途

      判斷是否沒有從源宮位飛化到目標宮位,四化可傳入一個數組或者一個字符串,傳入四化全部沒有飛化到目標宮位才返回 true

    • 定義

      ts
      type notFlyTo = (
        to: number | PalaceName, 
        withMutagens: Mutagen | Mutagen[]
      ) => boolean;
    • 參數

      參數類型是否必填默認值說明
      tonumber | PalaceNametrue-目標宮位索引或名稱
      withMutagensMutagen |Mutagen[]true-四化(祿、權、科、忌)
    • 返回值

      boolean

    selfMutaged() ^2.1.0

    • 用途

      判斷宮位是否有自化,傳入四化數組時需要全部滿足才返回 true

    • 定義

      ts
      type selfMutaged = (
        withMutagens: Mutagen | Mutagen[]
      ) => boolean;
    • 參數

      參數類型是否必填默認值說明
      withMutagensMutagen |Mutagen[]true-四化(祿、權、科、忌)
    • 返回值

      boolean

    selfMutagedOneOf() ^2.1.0

    • 用途

      判斷宮位是否有自化,若不傳入參數則會判斷所有四化,滿足一顆即返回 true

    • 定義

      ts
      type selfMutagedOneOf = (
        withMutagens: Mutagen | Mutagen[]
      ) => boolean;
    • 參數

      參數類型是否必填默認值說明
      withMutagensMutagen |Mutagen[]true-四化(祿、權、科、忌)
    • 返回值

      boolean

    notSelfMutaged() ^2.1.0

    • 用途

      判斷宮位是否有自化,如果傳入參數,則只判斷傳入的四化是否有自化,否則將會判斷所有四化

    • 定義

      ts
      type notSelfMutaged = (
        withMutagens: Mutagen | Mutagen[]
      ) => boolean;
    • 參數

      參數類型是否必填默認值說明
      withMutagensMutagen |Mutagen[]true-四化(祿、權、科、忌)
    • 返回值

      boolean

    mutagedPlaces() ^2.1.0

    • 用途

      獲取當前宮位產生四化的4個宮位數組,下標分別對【祿,權,科,忌】

    • 定義

      ts
      type mutagedPlaces = () => (IFunctionalPalace | undefined)[];
    • 參數

    • 返回值

      (IFunctionalPalace | undefined)[]

FunctionalSurpalaces ^1.2.0


implements IFunctionalSurpalaces extends SurroundedPalaces

該類所有屬性都是繼承自 SurroundedPalaces,然後在接口內定義了一些方法用於對星曜進行分析。

  • 接口定義

    ts
    interface FunctionalSurpalaces extends SurroundedPalaces {
      have: (stars: StarName[]) => boolean;
      notHave: (stars: StarName[]) => boolean;
      haveOneOf: (stars: StarName[]) => boolean;
      haveMutagen: (mutagen: Mutagen) => boolean;
      notHaveMutagen: (mutagen: Mutagen): boolean;
    }
  • 屬性

    參考 SurroundedPalaces

  • 方法

    have()

    • 用途

      判斷某個宮三方四正內是否有傳入的 星曜,要 所有 星曜 都在 三方四正內才會返回 true

    • 定義

      ts
      type have = (stars: StarName[]) => boolean;
    • 參數

      參數類型是否必填默認值說明
      starsStarName[]true-星曜名稱,可以包含主星、輔星、雜耀
    • 返回值

      boolean

    • 示例

      如果你想查看 命宮 三方四正是否有 紫微星右弼星

      ts
      const palaces = astrolabe.surroundedPalaces("命宮");
      const result = palaces.have(["紫微", "右弼"]);

      當然你也可以使用 鏈式調用 來簡化代碼

      ts
      const result = astrolabe.surroundedPalaces("命宮").have(["紫微", "右弼"]);

    notHave()

    • 用途

      判斷某個宮三方四正內是否沒有傳入的 星曜,要所有星曜 都不在 三方四正內才會返回 true

    • 定義

      ts
      type notHave = (stars: StarName[]) => boolean;
    • 參數

      參數類型是否必填默認值說明
      starsStarName[]true-星曜名稱,可以包含主星、輔星、雜耀
    • 返回值

      boolean

    • 示例

      如果你想查看 命宮 三方四正是否沒有 地空星地劫星

      ts
      const palaces = astrolabe.surroundedPalaces("命宮");
      const result = palaces.notHave(["地空", "地劫"]);

      當然你也可以使用 鏈式調用 來簡化代碼

      ts
      const result = astrolabe.surroundedPalaces("命宮").notHave(["地空", "地劫"]);

    haveMutagen()

    • 用途

      判斷宮位三方四正內是否有生年四化

    • 定義

      ts
      type haveMutagen = (mutagen: Mutagen) => boolean;
    • 參數

      參數類型是否必填默認值說明
      mutagenMutagentrue-四化名稱【祿|權|科|忌】
    • 返回值

      boolean

    • 示例

      如果你想查看 命宮 三方四正是否有 化祿

      ts
      const palaces = astrolabe.surroundedPalaces("命宮");
      const result = palaces.haveMutagen("祿");

      當然你也可以使用 鏈式調用 來簡化代碼

      ts
      const result = astrolabe.surroundedPalaces("命宮").haveMutagen("祿");

    notHaveMutagen()

    • 用途

      判斷宮位三方四正內是否沒有生年四化

    • 定義

      ts
      type notHaveMutagen = (mutagen: Mutagen) => boolean;
    • 參數

      參數類型是否必填默認值說明
      mutagenMutagentrue-四化名稱【祿|權|科|忌】
    • 返回值

      boolean

    • 示例

      如果你想查看 命宮 三方四正是不是沒有 化忌

      ts
      const palace = astrolabe.surroundedPalaces("命宮");
      const result = palace.notHaveMutagen("忌");

      當然你也可以使用 鏈式調用 來簡化代碼

      ts
      const result = astrolabe.surroundedPalaces("命宮").notHaveMutagen("忌");