type Falsy = "" | 0 | false | null | undefined; type 規則 = [ unknown, T | 規則 ][]; type 音韻屬性 = Partial>; /** * 《切韻》音系音韻地位。 * * 可使用字串 (母, 呼, 等, 重紐, 韻, 聲) 初始化。 * * | 音韻屬性 | 中文名稱 | 英文名稱 | 可能取值 | * | :- | :- | :- | :- | * | 母
組 | 聲母
組 | initial
group | **幫**滂並明
**端**透定泥

**知**徹澄孃
**精**清從心邪
**莊**初崇生俟
**章**昌常書船

**見**溪羣疑
**影**曉匣云

(粗體字為組,未涵蓋「來日以」) | * | 呼 | 呼 | rounding | 開口
合口 | * | 等 | 等 | division | 一二三四 | * | 重紐 | 重紐 | repeated initials | 重紐A類
重紐B類 | * | 韻
攝 | 韻母
攝 | rhyme
class | 通:東冬鍾
江:江
止:支脂之微
遇:魚虞模
蟹:齊祭泰佳皆夬灰咍廢
臻:眞臻文欣元魂痕
山:寒刪山先仙
效:蕭宵肴豪
果:歌
假:麻
宕:陽唐
梗:庚耕清青
曾:蒸登
流:尤侯幽
深:侵
咸:覃談鹽添咸銜嚴凡
(冒號前為攝,後為對應的韻) | * | 聲 | 聲調 | tone | 平上去入

舒 | * * 音韻地位六要素:母、呼、等、重紐、韻、聲。 * * 「呼」和「重紐」可為 `null`,其餘四個屬性不可為 `null`。 * * 當聲母為脣音,或韻母為「東冬鍾江虞模尤幽」(開合中立的韻)時,呼可以(並最好)為 `null`。 * 在其他情況下,呼必須取「開」或「合」。 * * 當聲母為脣牙喉音(云以母除外),且韻母為「支脂祭眞仙宵侵鹽」八韻之一時,重紐必須取 `A` 或 `B`。 * 在其他情況下,重紐可以(並最好)取 `null`。 * * **注意**:元韻置於臻攝而非山攝。 * * 不設諄、桓、戈韻。分別併入眞、寒、歌韻。 * * 不支援異體字,請手動轉換: * * * 音 唇 → 脣 * * 母 娘 → 孃 * * 母 荘 → 莊 * * 母 谿 → 溪 * * 母 群 → 羣 * * 韻 餚 → 肴 * * 韻 真 → 眞 */ declare class 音韻地位 { /** * 聲母 * @example * ```typescript * > 音韻地位 = Qieyun.音韻地位.from描述('幫三凡入'); * > 音韻地位.母; * '幫' * > 音韻地位 = Qieyun.音韻地位.from描述('羣開三A支平'); * > 音韻地位.母; * '羣' * ``` */ readonly 母: string; /** * 呼 * @example * ```typescript * > 音韻地位 = Qieyun.音韻地位.from描述('幫三凡入'); * > 音韻地位.呼; * null * > 音韻地位 = Qieyun.音韻地位.from描述('羣開三A支平'); * > 音韻地位.呼; * '開' * ``` */ readonly 呼: string | null; /** * 等 * @example * ```typescript * > 音韻地位 = Qieyun.音韻地位.from描述('幫三凡入'); * > 音韻地位.等; * '三' * > 音韻地位 = Qieyun.音韻地位.from描述('羣開三A支平'); * > 音韻地位.等; * '三' * ``` */ readonly 等: string; /** * 重紐 * @example * ```typescript * > 音韻地位 = Qieyun.音韻地位.from描述('幫三凡入'); * > 音韻地位.重紐; * null * > 音韻地位 = Qieyun.音韻地位.from描述('羣開三A支平'); * > 音韻地位.重紐; * 'A' * ``` */ readonly 重紐: string | null; /** * 韻(舉平以賅上去入) * @example * ```typescript * > 音韻地位 = Qieyun.音韻地位.from描述('幫三凡入'); * > 音韻地位.韻; * '凡' * > 音韻地位 = Qieyun.音韻地位.from描述('羣開三A支平'); * > 音韻地位.韻; * '支' * ``` */ readonly 韻: string; /** * 聲調 * @example * ```typescript * > 音韻地位 = Qieyun.音韻地位.from描述('幫三凡入'); * > 音韻地位.聲; * '入' * > 音韻地位 = Qieyun.音韻地位.from描述('羣開三A支平'); * > 音韻地位.聲; * '平' * ``` */ readonly 聲: string; /** * 初始化音韻地位物件。 * @param 母 聲母:幫, 滂, 並, 明, … * @param 呼 呼:`null`, 開, 合 * @param 等 等:一, 二, 三, 四 * @param 重紐 重紐:`null`, A, B * @param 韻 韻母(舉平以賅上去入):東, 冬, 鍾, 江, …, 祭, 泰, 夬, 廢 * @param 聲 聲調:平, 上, 去, 入 * @returns 字串所描述的音韻地位。 * @example * ```typescript * > new Qieyun.音韻地位('幫', null, '三', null, '凡', '入'); * 音韻地位 { '幫三凡入' } * > new Qieyun.音韻地位('羣', '開', '三', 'A', '支', '平'); * 音韻地位 { '羣開三A支平' } * ``` */ constructor(母: string, 呼: string | null, 等: string, 重紐: string | null, 韻: string, 聲: string); /** * 清濁(全清、次清、全濁、次濁) * * 曉母為全清,云以來日四母為次濁。 * * @example * ```typescript * > 音韻地位 = Qieyun.音韻地位.from描述('幫三凡入'); * > 音韻地位.清濁; * '全清' * > 音韻地位 = Qieyun.音韻地位.from描述('羣開三A支平'); * > 音韻地位.清濁; * '全濁' * ``` */ get 清濁(): string; /** * 音(發音部位:脣、舌、齒、牙、喉) * * **注意**: * * * 不設半舌半齒音,來母歸舌音,日母歸齒音 * * 以母不屬於影組,但屬於喉音 * * @example * ```typescript * > 音韻地位 = Qieyun.音韻地位.from描述('幫三凡入'); * > 音韻地位.音; * '脣' * > 音韻地位 = Qieyun.音韻地位.from描述('羣開三A支平'); * > 音韻地位.音; * '牙' * ``` */ get 音(): string; /** * 攝 * @example * ```typescript * > 音韻地位 = Qieyun.音韻地位.from描述('幫三凡入'); * > 音韻地位.攝; * '咸' * > 音韻地位 = Qieyun.音韻地位.from描述('羣開三A支平'); * > 音韻地位.攝; * '止' * ``` */ get 攝(): string; /** * 韻別(陰聲韻、陽聲韻、入聲韻) * @example * ```typescript * > 音韻地位 = Qieyun.音韻地位.from描述('幫三凡入'); * > 音韻地位.韻別; * '入' * > 音韻地位 = Qieyun.音韻地位.from描述('羣開三A支平'); * > 音韻地位.韻別; * '陰' * ``` */ get 韻別(): string; /** * 組 * @example * ```typescript * > 音韻地位 = Qieyun.音韻地位.from描述('幫三凡入'); * > 音韻地位.組; * '幫' * > 音韻地位 = Qieyun.音韻地位.from描述('羣開三A支平'); * > 音韻地位.組; * '見' * ``` */ get 組(): string | null; /** * 描述 * @example * ```typescript * > 音韻地位 = Qieyun.音韻地位.from描述('幫三凡入'); * > 音韻地位.描述; * '幫三凡入' * > 音韻地位 = Qieyun.音韻地位.from描述('羣開三A支平'); * > 音韻地位.描述; * '羣開三A支平' * ``` */ get 描述(): string; /** * 最簡描述 * @example * ```typescript * > 音韻地位 = Qieyun.音韻地位.from描述('幫三凡入'); * > 音韻地位.最簡描述; * '幫凡入' * > 音韻地位 = Qieyun.音韻地位.from描述('羣開三A支平'); * > 音韻地位.最簡描述; * '羣開A支平' * ``` */ get 最簡描述(): string; /** * 表達式,可用於 [[`屬於`]] 函數 * @example * ```typescript * > 音韻地位 = Qieyun.音韻地位.from描述('幫三凡入'); * > 音韻地位.表達式; * '幫母 開合中立 三等 不分重紐 凡韻 入聲' * > 音韻地位 = Qieyun.音韻地位.from描述('羣開三A支平'); * > 音韻地位.表達式; * '羣母 開口 三等 重紐A類 支韻 平聲' * ``` */ get 表達式(): string; /** * 音韻地位對應的編碼。音韻編碼與音韻地位之間存在一一映射關係。 * @example * ```typescript * > 音韻地位 = Qieyun.音韻地位.from描述('幫三凡入'); * > 音韻地位.編碼; * 'A9D' * > 音韻地位 = Qieyun.音韻地位.from描述('羣開三A支平'); * > 音韻地位.編碼; * 'fFA' * ``` */ get 編碼(): string; /** * 調整該音韻地位的屬性,會驗證調整後地位的合法性,返回新的對象。 * * **注意**:原對象不會被修改。 * * @param 調整屬性 對象,其屬性可為六項基本屬性中的若干項,各屬性的值為欲修改成的值。 * * 不含某屬性或某屬性值為 `undefined` 則表示不修改該屬性。 * * @returns 新的 `音韻地位`,其中會含有指定的修改值。 * @example * ```typescript * > 音韻地位 = Qieyun.音韻地位.from描述('幫三元上'); * > 音韻地位.調整({ 聲: '平' }).描述 * '幫三元平' * > 音韻地位.調整({ 母: '見', 呼: '合' }).描述 * '見合三元上' * ``` */ 調整(調整屬性: 音韻屬性): 音韻地位; /** * 判斷某個小韻是否屬於給定的音韻地位限定範圍。 * * 本方法可使用一般形式(`.屬於('...')`)或標籤模板語法(`` .屬於`...` ``)。 * * 標籤模板語法僅能用於字面值的字串,但寫出來較簡單清晰。在不嵌入參數時,兩者效果相同。建議當表達式為字面值時使用標籤模板語法。 * * @param 表達式 描述音韻地位的字串 * * 字串中音韻地位的描述格式: * * * 音韻地位六要素: * * `……母`, `……等`, `……韻`, `……聲` * * 呼:`開口`, `合口`, `開合中立` * * 重紐:`重紐A類`, `重紐B類`, `不分重紐` * * 拓展音韻地位: * * `……組`, `……音`, `……攝` * * 清濁:`全清`, `次清`, `全濁`, `次濁`, `清音`, `濁音` * * 韻別:`陰聲韻`, `陽聲韻`, `入聲韻` * * 其他表達式: * * `輕脣韻`:東鍾微虞廢文元陽尤凡韻三等(僅判斷韻與等,不判斷聲母) * * `次入韻`:祭泰夬廢韻 * * `仄聲`:上去入聲 * * `舒聲`:平上去聲 * * `鈍音`:幫見影組 * * `銳音`:鈍音以外聲母 * * 支援的運算子: * * * AND 運算子:`且`, `and`, `&`, `&&` * *   OR 運算子:`或`, `or`, `|`, `||` * * NOT 運算子:`非`, `not`, `~`, `!` * * 括號:`(……)`, `(……)` * * 各表達式及運算子之間以空格隔開。 * * AND 運算子可省略。 * * 如 `(端精組 且 入聲) 或 (以母 且 四等 且 去聲)` 與 `端精組 入聲 或 以母 四等 去聲` 同義。 * @returns 若描述音韻地位的字串符合該音韻地位,回傳 `true`;否則回傳 `false`。 * @throws 若表達式為空、不合語法、或限定條件不合法,則拋出異常。 * @example * ```typescript * > 音韻地位 = Qieyun.音韻地位.from描述('幫三凡入'); * > 音韻地位.屬於`章母`; // 標籤模板語法(表達式為字面值時推荐) * false * > 音韻地位.屬於('章母'); // 一般形式 * false * > 音韻地位.屬於`一四等`; * false * > 音韻地位.屬於`幫組 或 陽韻`; * true * ``` */ 屬於(表達式: string): boolean; /** * 判斷某個小韻是否屬於給定的音韻地位限定範圍(標籤模板語法)。 * * 嵌入的參數可以是: * * * 函數:會被執行;若其傳回值為字串,會遞迴套用至 [[`音韻地位.屬於`]] 函數,否則會檢測其真值 * * 字串:會遞迴套用至 [[`音韻地位.屬於`]] 函數 * * 其他:會檢測其真值 * * **注意**: * * * 該語法僅能用於字面值模板串,不能用於如 [[`.判斷`]] 等 * * `` .屬於`${...}` `` 和 `` .屬於(`${...}`) `` 不同,只有前者支持上述嵌入參數,後者的模板串會先被求值為普通字串。 * * @param 表達式 描述音韻地位的模板字串列表。 * @param 參數 要嵌入模板的參數列表。 * @returns 若描述音韻地位的字串符合該音韻地位,回傳 `true`;否則回傳 `false`。 * @throws 若表達式為空、不合語法、或限定條件不合法,則拋出異常。 * @example * ```typescript * > 音韻地位 = Qieyun.音韻地位.from描述('幫三凡入'); * > 音韻地位.屬於`一四等 或 ${音韻地位.描述 === '幫三凡入'}`; * true * ``` */ 屬於(表達式: readonly string[], ...參數: unknown[]): boolean; /** * 判斷某個小韻是否符合給定的某個條件,傳回自訂值。 * @param 規則 `[判斷式, 結果][]` 形式的陣列。 * * 判斷式可以是: * * *   函數:會被執行;若其傳回值為非空字串,會套用至 [[`音韻地位.屬於`]] 函數,若為布林值則直接決定是否跳過本規則,否則規則永遠不會被跳過 * * 非空字串:描述音韻地位的表達式,會套用至 [[`音韻地位.屬於`]] 函數 * *  布林值:直接決定是否跳過本規則 * *   其他:規則永遠不會被跳過(可用作指定後備結果) * * 建議使用空字串、`null` 或 `true` 作判斷式以指定後備結果。 * * 結果可以是任意傳回值或遞迴規則。 * @param error 若為 `true` 或非空字串,在未涵蓋所有條件時會拋出錯誤。 * @param fallback 若為 `true`,在遞迴子陣列未涵蓋所有條件時會繼續嘗試母陣列的條件。 * @returns 自訂值,在未涵蓋所有條件且不使用 `error` 時會回傳 `null`。 * @throws `未涵蓋所有條件`(或 `error` 參數), `規則需符合格式`, `無效的表達式`, `表達式為空`, `非預期的運算子`, `非預期的閉括號`, `括號未匹配` * @example * ```typescript * > 音韻地位 = Qieyun.音韻地位.from描述('幫三凡入'); * > 音韻地位.判斷([ * > ['遇果假攝 或 支脂之佳韻', ''], * > ['蟹攝 或 微韻', 'i'], * > ['效流攝', 'u'], * > ['深咸攝', [ * > ['舒聲', 'm'], * > ['入聲', 'p'] * > ]], * > ['臻山攝', [ * > ['舒聲', 'n'], * > ['入聲', 't'] * > ]], * > ['通江宕梗曾攝', [ * > ['舒聲', 'ng'], * > ['入聲', 'k'] * > ]] * > ], '無韻尾規則') * 'p' * ``` */ 判斷(規則: 規則, error?: E, fallback?: boolean): E extends Falsy ? T | null : T; /** * 判斷當前音韻地位是否等於另一音韻地位。 * @param other 另一音韻地位。 * @returns 若相等,則回傳 `true`;否則回傳 `false`。 * @example * ```typescript * > a = Qieyun.音韻地位.from描述('羣開三A支平'); * > b = Qieyun.音韻地位.from描述('羣開三A支平'); * > a === b; * false * > a.等於(b); * true * ``` */ 等於(other: 音韻地位): boolean; /** * 驗證給定的音韻地位六要素是否合法。此為最小程度的驗證,想要更強限定請用 [[`適配分析體系`]]。 * * 母必須為「幫滂並明端透定泥來知徹澄孃精清從心邪莊初崇生俟章昌常書船日 * 見溪羣疑影曉匣云以」三十八聲類之一。 * * 韻必須為「東冬鍾江支脂之微魚虞模齊祭泰佳皆夬灰咍廢眞臻文欣元魂痕 * 寒刪山仙先蕭宵肴豪歌麻陽唐庚耕清青蒸登尤侯幽侵覃談鹽添咸銜嚴凡」五十八韻之一。 * * 注意:不設諄、桓、戈韻。分別併入眞、寒、歌韻。 * * 當聲母為脣音,或韻母為「東冬鍾江虞模尤幽」(開合中立的韻)時,呼可以為 `null`。 * 在其他情況下,呼必須取「開」或「合」。 * * 當聲母為脣牙喉音,且韻母為「支脂祭眞仙宵侵鹽」八韻之一時,重紐必須取 `A` 或 `B`。 * 在其他情況下,重紐可以取 `null`。 * @param 母 聲母:幫, 滂, 並, 明, … * @param 呼 呼:`null`, 開, 合 * @param 等 等:一, 二, 三, 四 * @param 重紐 重紐:`null`, A, B * @param 韻 韻母(舉平以賅上去入):東, 冬, 鍾, 江, …, 祭, 泰, 夬, 廢 * @param 聲 聲調:平, 上, 去, 入 * @throws 若給定的音韻地位六要素不合法,則拋出異常。 */ static 驗證(母: string, 呼: string | null, 等: string, 重紐: string | null, 韻: string, 聲: string): void; /** * 將音韻編碼轉換為音韻地位。 * @param 音韻編碼 音韻地位的編碼 * @returns 給定的音韻編碼對應的音韻地位。 * @example * ```typescript * > Qieyun.音韻地位.from編碼('A9D'); * 音韻地位 { '幫三凡入' } * > Qieyun.音韻地位.from編碼('fFA'); * 音韻地位 { '羣開三A支平' } * ``` */ static from編碼(音韻編碼: string): 音韻地位; /** * 將音韻描述或最簡音韻描述轉換為音韻地位。 * @param 音韻描述 音韻地位的描述或最簡描述 * @returns 給定的音韻描述或最簡描述對應的音韻地位。 * @example * ```typescript * > Qieyun.音韻地位.from描述('幫三凡入'); * 音韻地位 { '幫三凡入' } * > Qieyun.音韻地位.from描述('羣開三A支平'); * 音韻地位 { '羣開三A支平' } * ``` */ static from描述(音韻描述: string): 音韻地位; } declare namespace 資料 { type Falsy = "" | 0 | false | null | undefined; type 規則 = [ unknown, T | 規則 ][]; type 音韻屬性 = Partial>; /** * 《切韻》音系音韻地位。 * * 可使用字串 (母, 呼, 等, 重紐, 韻, 聲) 初始化。 * * | 音韻屬性 | 中文名稱 | 英文名稱 | 可能取值 | * | :- | :- | :- | :- | * | 母
組 | 聲母
組 | initial
group | **幫**滂並明
**端**透定泥

**知**徹澄孃
**精**清從心邪
**莊**初崇生俟
**章**昌常書船

**見**溪羣疑
**影**曉匣云

(粗體字為組,未涵蓋「來日以」) | * | 呼 | 呼 | rounding | 開口
合口 | * | 等 | 等 | division | 一二三四 | * | 重紐 | 重紐 | repeated initials | 重紐A類
重紐B類 | * | 韻
攝 | 韻母
攝 | rhyme
class | 通:東冬鍾
江:江
止:支脂之微
遇:魚虞模
蟹:齊祭泰佳皆夬灰咍廢
臻:眞臻文欣元魂痕
山:寒刪山先仙
效:蕭宵肴豪
果:歌
假:麻
宕:陽唐
梗:庚耕清青
曾:蒸登
流:尤侯幽
深:侵
咸:覃談鹽添咸銜嚴凡
(冒號前為攝,後為對應的韻) | * | 聲 | 聲調 | tone | 平上去入

舒 | * * 音韻地位六要素:母、呼、等、重紐、韻、聲。 * * 「呼」和「重紐」可為 `null`,其餘四個屬性不可為 `null`。 * * 當聲母為脣音,或韻母為「東冬鍾江虞模尤幽」(開合中立的韻)時,呼可以(並最好)為 `null`。 * 在其他情況下,呼必須取「開」或「合」。 * * 當聲母為脣牙喉音(云以母除外),且韻母為「支脂祭眞仙宵侵鹽」八韻之一時,重紐必須取 `A` 或 `B`。 * 在其他情況下,重紐可以(並最好)取 `null`。 * * **注意**:元韻置於臻攝而非山攝。 * * 不設諄、桓、戈韻。分別併入眞、寒、歌韻。 * * 不支援異體字,請手動轉換: * * * 音 唇 → 脣 * * 母 娘 → 孃 * * 母 荘 → 莊 * * 母 谿 → 溪 * * 母 群 → 羣 * * 韻 餚 → 肴 * * 韻 真 → 眞 */ class 音韻地位 { /** * 聲母 * @example * ```typescript * > 音韻地位 = Qieyun.音韻地位.from描述('幫三凡入'); * > 音韻地位.母; * '幫' * > 音韻地位 = Qieyun.音韻地位.from描述('羣開三A支平'); * > 音韻地位.母; * '羣' * ``` */ readonly 母: string; /** * 呼 * @example * ```typescript * > 音韻地位 = Qieyun.音韻地位.from描述('幫三凡入'); * > 音韻地位.呼; * null * > 音韻地位 = Qieyun.音韻地位.from描述('羣開三A支平'); * > 音韻地位.呼; * '開' * ``` */ readonly 呼: string | null; /** * 等 * @example * ```typescript * > 音韻地位 = Qieyun.音韻地位.from描述('幫三凡入'); * > 音韻地位.等; * '三' * > 音韻地位 = Qieyun.音韻地位.from描述('羣開三A支平'); * > 音韻地位.等; * '三' * ``` */ readonly 等: string; /** * 重紐 * @example * ```typescript * > 音韻地位 = Qieyun.音韻地位.from描述('幫三凡入'); * > 音韻地位.重紐; * null * > 音韻地位 = Qieyun.音韻地位.from描述('羣開三A支平'); * > 音韻地位.重紐; * 'A' * ``` */ readonly 重紐: string | null; /** * 韻(舉平以賅上去入) * @example * ```typescript * > 音韻地位 = Qieyun.音韻地位.from描述('幫三凡入'); * > 音韻地位.韻; * '凡' * > 音韻地位 = Qieyun.音韻地位.from描述('羣開三A支平'); * > 音韻地位.韻; * '支' * ``` */ readonly 韻: string; /** * 聲調 * @example * ```typescript * > 音韻地位 = Qieyun.音韻地位.from描述('幫三凡入'); * > 音韻地位.聲; * '入' * > 音韻地位 = Qieyun.音韻地位.from描述('羣開三A支平'); * > 音韻地位.聲; * '平' * ``` */ readonly 聲: string; /** * 初始化音韻地位物件。 * @param 母 聲母:幫, 滂, 並, 明, … * @param 呼 呼:`null`, 開, 合 * @param 等 等:一, 二, 三, 四 * @param 重紐 重紐:`null`, A, B * @param 韻 韻母(舉平以賅上去入):東, 冬, 鍾, 江, …, 祭, 泰, 夬, 廢 * @param 聲 聲調:平, 上, 去, 入 * @returns 字串所描述的音韻地位。 * @example * ```typescript * > new Qieyun.音韻地位('幫', null, '三', null, '凡', '入'); * 音韻地位 { '幫三凡入' } * > new Qieyun.音韻地位('羣', '開', '三', 'A', '支', '平'); * 音韻地位 { '羣開三A支平' } * ``` */ constructor(母: string, 呼: string | null, 等: string, 重紐: string | null, 韻: string, 聲: string); /** * 清濁(全清、次清、全濁、次濁) * * 曉母為全清,云以來日四母為次濁。 * * @example * ```typescript * > 音韻地位 = Qieyun.音韻地位.from描述('幫三凡入'); * > 音韻地位.清濁; * '全清' * > 音韻地位 = Qieyun.音韻地位.from描述('羣開三A支平'); * > 音韻地位.清濁; * '全濁' * ``` */ get 清濁(): string; /** * 音(發音部位:脣、舌、齒、牙、喉) * * **注意**: * * * 不設半舌半齒音,來母歸舌音,日母歸齒音 * * 以母不屬於影組,但屬於喉音 * * @example * ```typescript * > 音韻地位 = Qieyun.音韻地位.from描述('幫三凡入'); * > 音韻地位.音; * '脣' * > 音韻地位 = Qieyun.音韻地位.from描述('羣開三A支平'); * > 音韻地位.音; * '牙' * ``` */ get 音(): string; /** * 攝 * @example * ```typescript * > 音韻地位 = Qieyun.音韻地位.from描述('幫三凡入'); * > 音韻地位.攝; * '咸' * > 音韻地位 = Qieyun.音韻地位.from描述('羣開三A支平'); * > 音韻地位.攝; * '止' * ``` */ get 攝(): string; /** * 韻別(陰聲韻、陽聲韻、入聲韻) * @example * ```typescript * > 音韻地位 = Qieyun.音韻地位.from描述('幫三凡入'); * > 音韻地位.韻別; * '入' * > 音韻地位 = Qieyun.音韻地位.from描述('羣開三A支平'); * > 音韻地位.韻別; * '陰' * ``` */ get 韻別(): string; /** * 組 * @example * ```typescript * > 音韻地位 = Qieyun.音韻地位.from描述('幫三凡入'); * > 音韻地位.組; * '幫' * > 音韻地位 = Qieyun.音韻地位.from描述('羣開三A支平'); * > 音韻地位.組; * '見' * ``` */ get 組(): string | null; /** * 描述 * @example * ```typescript * > 音韻地位 = Qieyun.音韻地位.from描述('幫三凡入'); * > 音韻地位.描述; * '幫三凡入' * > 音韻地位 = Qieyun.音韻地位.from描述('羣開三A支平'); * > 音韻地位.描述; * '羣開三A支平' * ``` */ get 描述(): string; /** * 最簡描述 * @example * ```typescript * > 音韻地位 = Qieyun.音韻地位.from描述('幫三凡入'); * > 音韻地位.最簡描述; * '幫凡入' * > 音韻地位 = Qieyun.音韻地位.from描述('羣開三A支平'); * > 音韻地位.最簡描述; * '羣開A支平' * ``` */ get 最簡描述(): string; /** * 表達式,可用於 [[`屬於`]] 函數 * @example * ```typescript * > 音韻地位 = Qieyun.音韻地位.from描述('幫三凡入'); * > 音韻地位.表達式; * '幫母 開合中立 三等 不分重紐 凡韻 入聲' * > 音韻地位 = Qieyun.音韻地位.from描述('羣開三A支平'); * > 音韻地位.表達式; * '羣母 開口 三等 重紐A類 支韻 平聲' * ``` */ get 表達式(): string; /** * 音韻地位對應的編碼。音韻編碼與音韻地位之間存在一一映射關係。 * @example * ```typescript * > 音韻地位 = Qieyun.音韻地位.from描述('幫三凡入'); * > 音韻地位.編碼; * 'A9D' * > 音韻地位 = Qieyun.音韻地位.from描述('羣開三A支平'); * > 音韻地位.編碼; * 'fFA' * ``` */ get 編碼(): string; /** * 調整該音韻地位的屬性,會驗證調整後地位的合法性,返回新的對象。 * * **注意**:原對象不會被修改。 * * @param 調整屬性 對象,其屬性可為六項基本屬性中的若干項,各屬性的值為欲修改成的值。 * * 不含某屬性或某屬性值為 `undefined` 則表示不修改該屬性。 * * @returns 新的 `音韻地位`,其中會含有指定的修改值。 * @example * ```typescript * > 音韻地位 = Qieyun.音韻地位.from描述('幫三元上'); * > 音韻地位.調整({ 聲: '平' }).描述 * '幫三元平' * > 音韻地位.調整({ 母: '見', 呼: '合' }).描述 * '見合三元上' * ``` */ 調整(調整屬性: 音韻屬性): 音韻地位; /** * 判斷某個小韻是否屬於給定的音韻地位限定範圍。 * * 本方法可使用一般形式(`.屬於('...')`)或標籤模板語法(`` .屬於`...` ``)。 * * 標籤模板語法僅能用於字面值的字串,但寫出來較簡單清晰。在不嵌入參數時,兩者效果相同。建議當表達式為字面值時使用標籤模板語法。 * * @param 表達式 描述音韻地位的字串 * * 字串中音韻地位的描述格式: * * * 音韻地位六要素: * * `……母`, `……等`, `……韻`, `……聲` * * 呼:`開口`, `合口`, `開合中立` * * 重紐:`重紐A類`, `重紐B類`, `不分重紐` * * 拓展音韻地位: * * `……組`, `……音`, `……攝` * * 清濁:`全清`, `次清`, `全濁`, `次濁`, `清音`, `濁音` * * 韻別:`陰聲韻`, `陽聲韻`, `入聲韻` * * 其他表達式: * * `輕脣韻`:東鍾微虞廢文元陽尤凡韻三等(僅判斷韻與等,不判斷聲母) * * `次入韻`:祭泰夬廢韻 * * `仄聲`:上去入聲 * * `舒聲`:平上去聲 * * `鈍音`:幫見影組 * * `銳音`:鈍音以外聲母 * * 支援的運算子: * * * AND 運算子:`且`, `and`, `&`, `&&` * *   OR 運算子:`或`, `or`, `|`, `||` * * NOT 運算子:`非`, `not`, `~`, `!` * * 括號:`(……)`, `(……)` * * 各表達式及運算子之間以空格隔開。 * * AND 運算子可省略。 * * 如 `(端精組 且 入聲) 或 (以母 且 四等 且 去聲)` 與 `端精組 入聲 或 以母 四等 去聲` 同義。 * @returns 若描述音韻地位的字串符合該音韻地位,回傳 `true`;否則回傳 `false`。 * @throws 若表達式為空、不合語法、或限定條件不合法,則拋出異常。 * @example * ```typescript * > 音韻地位 = Qieyun.音韻地位.from描述('幫三凡入'); * > 音韻地位.屬於`章母`; // 標籤模板語法(表達式為字面值時推荐) * false * > 音韻地位.屬於('章母'); // 一般形式 * false * > 音韻地位.屬於`一四等`; * false * > 音韻地位.屬於`幫組 或 陽韻`; * true * ``` */ 屬於(表達式: string): boolean; /** * 判斷某個小韻是否屬於給定的音韻地位限定範圍(標籤模板語法)。 * * 嵌入的參數可以是: * * * 函數:會被執行;若其傳回值為字串,會遞迴套用至 [[`音韻地位.屬於`]] 函數,否則會檢測其真值 * * 字串:會遞迴套用至 [[`音韻地位.屬於`]] 函數 * * 其他:會檢測其真值 * * **注意**: * * * 該語法僅能用於字面值模板串,不能用於如 [[`.判斷`]] 等 * * `` .屬於`${...}` `` 和 `` .屬於(`${...}`) `` 不同,只有前者支持上述嵌入參數,後者的模板串會先被求值為普通字串。 * * @param 表達式 描述音韻地位的模板字串列表。 * @param 參數 要嵌入模板的參數列表。 * @returns 若描述音韻地位的字串符合該音韻地位,回傳 `true`;否則回傳 `false`。 * @throws 若表達式為空、不合語法、或限定條件不合法,則拋出異常。 * @example * ```typescript * > 音韻地位 = Qieyun.音韻地位.from描述('幫三凡入'); * > 音韻地位.屬於`一四等 或 ${音韻地位.描述 === '幫三凡入'}`; * true * ``` */ 屬於(表達式: readonly string[], ...參數: unknown[]): boolean; /** * 判斷某個小韻是否符合給定的某個條件,傳回自訂值。 * @param 規則 `[判斷式, 結果][]` 形式的陣列。 * * 判斷式可以是: * * *   函數:會被執行;若其傳回值為非空字串,會套用至 [[`音韻地位.屬於`]] 函數,若為布林值則直接決定是否跳過本規則,否則規則永遠不會被跳過 * * 非空字串:描述音韻地位的表達式,會套用至 [[`音韻地位.屬於`]] 函數 * *  布林值:直接決定是否跳過本規則 * *   其他:規則永遠不會被跳過(可用作指定後備結果) * * 建議使用空字串、`null` 或 `true` 作判斷式以指定後備結果。 * * 結果可以是任意傳回值或遞迴規則。 * @param error 若為 `true` 或非空字串,在未涵蓋所有條件時會拋出錯誤。 * @param fallback 若為 `true`,在遞迴子陣列未涵蓋所有條件時會繼續嘗試母陣列的條件。 * @returns 自訂值,在未涵蓋所有條件且不使用 `error` 時會回傳 `null`。 * @throws `未涵蓋所有條件`(或 `error` 參數), `規則需符合格式`, `無效的表達式`, `表達式為空`, `非預期的運算子`, `非預期的閉括號`, `括號未匹配` * @example * ```typescript * > 音韻地位 = Qieyun.音韻地位.from描述('幫三凡入'); * > 音韻地位.判斷([ * > ['遇果假攝 或 支脂之佳韻', ''], * > ['蟹攝 或 微韻', 'i'], * > ['效流攝', 'u'], * > ['深咸攝', [ * > ['舒聲', 'm'], * > ['入聲', 'p'] * > ]], * > ['臻山攝', [ * > ['舒聲', 'n'], * > ['入聲', 't'] * > ]], * > ['通江宕梗曾攝', [ * > ['舒聲', 'ng'], * > ['入聲', 'k'] * > ]] * > ], '無韻尾規則') * 'p' * ``` */ 判斷(規則: 規則, error?: E, fallback?: boolean): E extends Falsy ? T | null : T; /** * 判斷當前音韻地位是否等於另一音韻地位。 * @param other 另一音韻地位。 * @returns 若相等,則回傳 `true`;否則回傳 `false`。 * @example * ```typescript * > a = Qieyun.音韻地位.from描述('羣開三A支平'); * > b = Qieyun.音韻地位.from描述('羣開三A支平'); * > a === b; * false * > a.等於(b); * true * ``` */ 等於(other: 音韻地位): boolean; /** * 驗證給定的音韻地位六要素是否合法。此為最小程度的驗證,想要更強限定請用 [[`適配分析體系`]]。 * * 母必須為「幫滂並明端透定泥來知徹澄孃精清從心邪莊初崇生俟章昌常書船日 * 見溪羣疑影曉匣云以」三十八聲類之一。 * * 韻必須為「東冬鍾江支脂之微魚虞模齊祭泰佳皆夬灰咍廢眞臻文欣元魂痕 * 寒刪山仙先蕭宵肴豪歌麻陽唐庚耕清青蒸登尤侯幽侵覃談鹽添咸銜嚴凡」五十八韻之一。 * * 注意:不設諄、桓、戈韻。分別併入眞、寒、歌韻。 * * 當聲母為脣音,或韻母為「東冬鍾江虞模尤幽」(開合中立的韻)時,呼可以為 `null`。 * 在其他情況下,呼必須取「開」或「合」。 * * 當聲母為脣牙喉音,且韻母為「支脂祭眞仙宵侵鹽」八韻之一時,重紐必須取 `A` 或 `B`。 * 在其他情況下,重紐可以取 `null`。 * @param 母 聲母:幫, 滂, 並, 明, … * @param 呼 呼:`null`, 開, 合 * @param 等 等:一, 二, 三, 四 * @param 重紐 重紐:`null`, A, B * @param 韻 韻母(舉平以賅上去入):東, 冬, 鍾, 江, …, 祭, 泰, 夬, 廢 * @param 聲 聲調:平, 上, 去, 入 * @throws 若給定的音韻地位六要素不合法,則拋出異常。 */ static 驗證(母: string, 呼: string | null, 等: string, 重紐: string | null, 韻: string, 聲: string): void; /** * 將音韻編碼轉換為音韻地位。 * @param 音韻編碼 音韻地位的編碼 * @returns 給定的音韻編碼對應的音韻地位。 * @example * ```typescript * > Qieyun.音韻地位.from編碼('A9D'); * 音韻地位 { '幫三凡入' } * > Qieyun.音韻地位.from編碼('fFA'); * 音韻地位 { '羣開三A支平' } * ``` */ static from編碼(音韻編碼: string): 音韻地位; /** * 將音韻描述或最簡音韻描述轉換為音韻地位。 * @param 音韻描述 音韻地位的描述或最簡描述 * @returns 給定的音韻描述或最簡描述對應的音韻地位。 * @example * ```typescript * > Qieyun.音韻地位.from描述('幫三凡入'); * 音韻地位 { '幫三凡入' } * > Qieyun.音韻地位.from描述('羣開三A支平'); * 音韻地位 { '羣開三A支平' } * ``` */ static from描述(音韻描述: string): 音韻地位; } type 字頭檢索結果 = { 音韻地位: 音韻地位; 韻部原貌: string; 反切: string | null; 解釋: string; }; type 編碼檢索結果 = { 字頭: string; 韻部原貌: string; 反切: string | null; 解釋: string; }; /** * 所有至少對應一個字頭的音韻地位。 * @returns 生成器,所有至少對應一個字頭的音韻地位。 */ function iter音韻地位(): IterableIterator<音韻地位>; /** * 由字頭查出相應的音韻地位、反切、解釋。 * @param 字頭 待查找的漢字 * @returns 陣列。陣列的每一項包含音韻地位和解釋。 * * 若字頭不存在,則回傳空陣列。 * @example * ```typescript * > Qieyun.資料.query字頭('結'); * [ { 音韻地位: 音韻地位 { '見開四先入' }, 韻部原貌: '屑', 反切: '古屑', 解釋: '締也古屑切十五' } ] * > Qieyun.資料.query字頭('冷'); * [ * { 音韻地位: 音韻地位 { '來開四青平' }, 韻部原貌: '青', 反切: '郎丁', 解釋: '冷凙吳人云冰凌又力頂切' }, * { 音韻地位: 音韻地位 { '來開二庚上' }, 韻部原貌: '梗', 反切: '魯打', 解釋: '寒也魯打切又魯頂切一' }, * { 音韻地位: 音韻地位 { '來開四青上' }, 韻部原貌: '迥', 反切: '力鼎', 解釋: '寒也又姓前趙錄有徐州刺史冷道字安義又盧打切' }, * ] * ``` */ function query字頭(字頭: string): 字頭檢索結果[]; /** * 音韻地位對應的字頭、反切、解釋。 * * 若音韻地位有音無字,則值為空陣列。 * @example * ```typescript * > 地位 = Qieyun.音韻地位.from描述('影開二銜去'); * > Qieyun.資料.query音韻地位(地位); * [ { 字頭: '𪒠', 韻部原貌: '鑑', 反切: null, 解釋: '叫呼仿佛𪒠然自得音黯去聲一' } ] * ``` */ function query音韻地位(地位: 音韻地位): 編碼檢索結果[]; } /** * 用於 [[`適配分析體系`]] 指定選項。 */ type 適配分析體系選項 = { /** * 執行驗證而非轉換:若地位不是指定體系的正則形式,則直接拋異常。 */ 嚴格?: boolean; /** * 指明適配前的原地位所屬體系,其寒歌韻脣音是依《廣韻》分韻而分開合。 * **僅當 `嚴格` 為 `false` 時可指定**,`嚴格` 為 `true` 時會直接依所指定體系而定。 * * 例如「明開寒入」地位,在韻典是「䔾」(《廣韻》在寒韻),在 poem《廣韻字音表》是「末」,需要區分。 * * 可選值如下: * - `'合'`(預設):原地位脣音寒歌韻默認為「合」少數為「開」。 * - `'開'`:原地位脣音寒歌韻均為「開」,若遇到「合」會拋異常。 */ 原地位脣音寒歌默認開合?: "\u958B" | "\u5408"; }; /** * 由 [[`適配分析體系`]] 創建。用於將給定的音韻地位,依創建該函數時指定的適配體系來正則化。 * * @throws 對於邊緣地位,若符合以下條件之一: * * - 創建該函數時指定了 `嚴格` 選項,且地位並非該體系的正則形式 * - 對該體系而言過於不合法而不確定如何處理 * - 沒有統一處理方式,僅能依具體的字修正其地位 * * 則會拋出異常。 */ type 適配函數 = (地位: 音韻地位) => 音韻地位; /** * 創建一個音韻地位分析體系的正則化函數,用於將其他體系的音韻地位正則化至指定體系的形式(如舌齒音是否標記重紐、是否認可端知類隔等)。 * * 注意該功能僅用於轉換音韻地位的格式,不用於處理各家資料對個別小韻、個別字的審音差異。 * * Qieyun.js 自 0.13 起的默認分析體系名為 `v2` 體系,預設資料等均基於該體系。v2 有以下衍生體系: * * `v2ext`:基於 `v2` 但亦可無歧義表示本表所列(除 `raw` 外)全部體系中存在的各種必要對立,這些體系轉換到 v2ext 無信息損失,故可作為跨體系使用 Qieyun.js 時的通用中介體系 * * `v2lenient`:同 `v2`,但允許齒音、云以母跨等搭配(詳見下述體系對比) * * 除此以外亦支持以下外界體系(及衍生體系): * * `poem`:poem《廣韻字音表》所用體系 * * `ytenx`:韻典網所用體系 * * `kyonh`:早期韻典網(及早年《廣韻》字表)所用體系 * * `raw`:特殊「體系」,指不對音韻地位格式作限制,可用於表達韻書、韻圖資料的粗分析結果等 * * 其中,`v2`、`v2ext`、`v2lenient`、`raw` 四種已經預先創建好,可用 `適配分析體系.v2`、`適配分析體系.v2ext` 等方法直接取得。 * * 體系間的主要區別(衍生體系與所基於體系相同時省略不列): * * 呼: * * 所有體系(不含 raw 下同)均不允許僅為開/合的韻的 `呼` 與韻不搭配 * * v2 對脣音及開合中立的韻均不標開合,`呼` 為 `null` * * v2ext 額外允許脣音寒、歌韻的 `呼` 可以為 `開`,用於表示依《廣韻》分韻歸於開口的小韻 * * v2 亦會將咍、嚴韻脣音正則化為灰、凡韻,並將凡韻非脣音正則化為嚴韻 * * ytenx、poem 則對所有地位均標上「開」或「合」,兩者不同在於: * * ytenx 在寒、歌韻區分脣音開合口 * * 冬韻 ytenx 標為「開」poem 標為「合」 * * 所有輕脣韻(包括開合中立韻)脣音 poem 均標為「合」 * * 重紐: * * v2、ytenx 僅對分重紐的聲母標 AB 類 * * ytenx 額外給清韻分重紐聲母標 A 類 * * v2(ext) 允許幽、蒸韻 B 類及脣音陽韻 A 類 * * kyonh、poem 對重紐八韻所有聲母均標 AB 類 * * poem 額外給清韻標 AB 類 * * 知莊組、云母標B,其餘標A,但 kyonh 眞韻合口知莊組例外(《廣韻》在諄韻) * * v2、kyonh 清韻無 B 類,歸為庚三 * * 類隔: * * 端知: * * 所有體系均允許「地」 * * v2 額外認可「爹」「打」「箉」「丟」所在韻母,其餘視為混切 * * poem 除「地」外均視為混切 * * ytenx 認可跨等搭配 * * 章組云以日母蟹攝平上: * * v2 視為(寄於齊灰咍韻的)祭廢韻平上聲 * * ytenx、poem 等均視為跨等搭配 * * v2ext 兩種均允許 * * 云匣母 * * v2 認可匣母三等,不認可云母非三等 * * ytenx 認可云母非三等,而匣母三等視為混切之云母 * * poem 兩者均視為混切,但三等重紐韻允許以「云母A類」對立 * * v2ext 則均允許,惟「云母A類」會被正則化為「匣母A類」 * * 齒音跨等搭配: * * v2 對精章組、日母二等視為混切之莊組、孃母,不允許其他跨等搭配 * * v2lenient 同 v2 但允許其他跨等搭配 * * v2 不允許其他是因為該類小韻多為誤切、訛字或切語並非出自切韻音系,僅可個別考證處理,無法自動正則化;v2lenient 則將其保持原樣 * * poem 認可章組以日母非三等,視精組二等為混切之莊組 * * v2ext、ytenx 允許任意搭配 * * 莊組眞欣韻開口: * * v2 均視為臻韻 * * ytenx 莊組欣韻視為臻韻 * * v2ext、poem 均允許 * * @param 分析體系 指定體系的名稱。若名稱後帶 `Strict`,則相當於將 `選項.嚴格` 設定為 `true` * @param 選項 * * @example * ```typescript * > const { 音韻地位, 適配分析體系 } = Qieyun; * > const v2 = 適配分析體系.v2; // 或用 適配分析體系("v2"); * > v2(音韻地位.from描述('幫開B清入')).描述 * '幫三庚入' * > v2(音韻地位.from描述('並開咍上')).描述 * '並一灰上' * > const v2extStrict = 適配分析體系("v2", { 嚴格: true }); * > v2extStrict(音韻地位.from描述('幫B清入')) * '幫三B清入' * ``` */ declare function 適配分析體系(分析體系?: string, 選項?: 適配分析體系選項): 適配函數; declare namespace 適配分析體系 { var raw: 適配函數; var v2: 適配函數; var v2Strict: 適配函數; var v2lenient: 適配函數; var v2ext: 適配函數; var v2extStrict: 適配函數; var v2extFromPoem: 適配函數; } declare namespace 表達式 { /** * 在重紐韻下須分重紐的聲母(脣牙喉音,含匣母,不含云以母) */ const 重紐母: string; /** * 重紐八韻(支脂祭眞仙宵侵鹽) */ const 重紐韻: string; /** * 韻內分開合口的韻 */ const 分開合韻: string; /** * 僅為開口的韻(含之、魚韻及效、深、咸攝諸韻) */ const 開口韻: string; /** * 僅為合口的韻 */ const 合口韻: string; /** * 開合中立韻(東冬鍾江虞模尤幽) */ const 開合中立韻: string; } declare namespace 推導方案 { type Falsy = "" | 0 | false | null | undefined; type 規則 = [ unknown, T | 規則 ][]; type 音韻屬性 = Partial>; /** * 《切韻》音系音韻地位。 * * 可使用字串 (母, 呼, 等, 重紐, 韻, 聲) 初始化。 * * | 音韻屬性 | 中文名稱 | 英文名稱 | 可能取值 | * | :- | :- | :- | :- | * | 母
組 | 聲母
組 | initial
group | **幫**滂並明
**端**透定泥

**知**徹澄孃
**精**清從心邪
**莊**初崇生俟
**章**昌常書船

**見**溪羣疑
**影**曉匣云

(粗體字為組,未涵蓋「來日以」) | * | 呼 | 呼 | rounding | 開口
合口 | * | 等 | 等 | division | 一二三四 | * | 重紐 | 重紐 | repeated initials | 重紐A類
重紐B類 | * | 韻
攝 | 韻母
攝 | rhyme
class | 通:東冬鍾
江:江
止:支脂之微
遇:魚虞模
蟹:齊祭泰佳皆夬灰咍廢
臻:眞臻文欣元魂痕
山:寒刪山先仙
效:蕭宵肴豪
果:歌
假:麻
宕:陽唐
梗:庚耕清青
曾:蒸登
流:尤侯幽
深:侵
咸:覃談鹽添咸銜嚴凡
(冒號前為攝,後為對應的韻) | * | 聲 | 聲調 | tone | 平上去入

舒 | * * 音韻地位六要素:母、呼、等、重紐、韻、聲。 * * 「呼」和「重紐」可為 `null`,其餘四個屬性不可為 `null`。 * * 當聲母為脣音,或韻母為「東冬鍾江虞模尤幽」(開合中立的韻)時,呼可以(並最好)為 `null`。 * 在其他情況下,呼必須取「開」或「合」。 * * 當聲母為脣牙喉音(云以母除外),且韻母為「支脂祭眞仙宵侵鹽」八韻之一時,重紐必須取 `A` 或 `B`。 * 在其他情況下,重紐可以(並最好)取 `null`。 * * **注意**:元韻置於臻攝而非山攝。 * * 不設諄、桓、戈韻。分別併入眞、寒、歌韻。 * * 不支援異體字,請手動轉換: * * * 音 唇 → 脣 * * 母 娘 → 孃 * * 母 荘 → 莊 * * 母 谿 → 溪 * * 母 群 → 羣 * * 韻 餚 → 肴 * * 韻 真 → 眞 */ class 音韻地位 { /** * 聲母 * @example * ```typescript * > 音韻地位 = Qieyun.音韻地位.from描述('幫三凡入'); * > 音韻地位.母; * '幫' * > 音韻地位 = Qieyun.音韻地位.from描述('羣開三A支平'); * > 音韻地位.母; * '羣' * ``` */ readonly 母: string; /** * 呼 * @example * ```typescript * > 音韻地位 = Qieyun.音韻地位.from描述('幫三凡入'); * > 音韻地位.呼; * null * > 音韻地位 = Qieyun.音韻地位.from描述('羣開三A支平'); * > 音韻地位.呼; * '開' * ``` */ readonly 呼: string | null; /** * 等 * @example * ```typescript * > 音韻地位 = Qieyun.音韻地位.from描述('幫三凡入'); * > 音韻地位.等; * '三' * > 音韻地位 = Qieyun.音韻地位.from描述('羣開三A支平'); * > 音韻地位.等; * '三' * ``` */ readonly 等: string; /** * 重紐 * @example * ```typescript * > 音韻地位 = Qieyun.音韻地位.from描述('幫三凡入'); * > 音韻地位.重紐; * null * > 音韻地位 = Qieyun.音韻地位.from描述('羣開三A支平'); * > 音韻地位.重紐; * 'A' * ``` */ readonly 重紐: string | null; /** * 韻(舉平以賅上去入) * @example * ```typescript * > 音韻地位 = Qieyun.音韻地位.from描述('幫三凡入'); * > 音韻地位.韻; * '凡' * > 音韻地位 = Qieyun.音韻地位.from描述('羣開三A支平'); * > 音韻地位.韻; * '支' * ``` */ readonly 韻: string; /** * 聲調 * @example * ```typescript * > 音韻地位 = Qieyun.音韻地位.from描述('幫三凡入'); * > 音韻地位.聲; * '入' * > 音韻地位 = Qieyun.音韻地位.from描述('羣開三A支平'); * > 音韻地位.聲; * '平' * ``` */ readonly 聲: string; /** * 初始化音韻地位物件。 * @param 母 聲母:幫, 滂, 並, 明, … * @param 呼 呼:`null`, 開, 合 * @param 等 等:一, 二, 三, 四 * @param 重紐 重紐:`null`, A, B * @param 韻 韻母(舉平以賅上去入):東, 冬, 鍾, 江, …, 祭, 泰, 夬, 廢 * @param 聲 聲調:平, 上, 去, 入 * @returns 字串所描述的音韻地位。 * @example * ```typescript * > new Qieyun.音韻地位('幫', null, '三', null, '凡', '入'); * 音韻地位 { '幫三凡入' } * > new Qieyun.音韻地位('羣', '開', '三', 'A', '支', '平'); * 音韻地位 { '羣開三A支平' } * ``` */ constructor(母: string, 呼: string | null, 等: string, 重紐: string | null, 韻: string, 聲: string); /** * 清濁(全清、次清、全濁、次濁) * * 曉母為全清,云以來日四母為次濁。 * * @example * ```typescript * > 音韻地位 = Qieyun.音韻地位.from描述('幫三凡入'); * > 音韻地位.清濁; * '全清' * > 音韻地位 = Qieyun.音韻地位.from描述('羣開三A支平'); * > 音韻地位.清濁; * '全濁' * ``` */ get 清濁(): string; /** * 音(發音部位:脣、舌、齒、牙、喉) * * **注意**: * * * 不設半舌半齒音,來母歸舌音,日母歸齒音 * * 以母不屬於影組,但屬於喉音 * * @example * ```typescript * > 音韻地位 = Qieyun.音韻地位.from描述('幫三凡入'); * > 音韻地位.音; * '脣' * > 音韻地位 = Qieyun.音韻地位.from描述('羣開三A支平'); * > 音韻地位.音; * '牙' * ``` */ get 音(): string; /** * 攝 * @example * ```typescript * > 音韻地位 = Qieyun.音韻地位.from描述('幫三凡入'); * > 音韻地位.攝; * '咸' * > 音韻地位 = Qieyun.音韻地位.from描述('羣開三A支平'); * > 音韻地位.攝; * '止' * ``` */ get 攝(): string; /** * 韻別(陰聲韻、陽聲韻、入聲韻) * @example * ```typescript * > 音韻地位 = Qieyun.音韻地位.from描述('幫三凡入'); * > 音韻地位.韻別; * '入' * > 音韻地位 = Qieyun.音韻地位.from描述('羣開三A支平'); * > 音韻地位.韻別; * '陰' * ``` */ get 韻別(): string; /** * 組 * @example * ```typescript * > 音韻地位 = Qieyun.音韻地位.from描述('幫三凡入'); * > 音韻地位.組; * '幫' * > 音韻地位 = Qieyun.音韻地位.from描述('羣開三A支平'); * > 音韻地位.組; * '見' * ``` */ get 組(): string | null; /** * 描述 * @example * ```typescript * > 音韻地位 = Qieyun.音韻地位.from描述('幫三凡入'); * > 音韻地位.描述; * '幫三凡入' * > 音韻地位 = Qieyun.音韻地位.from描述('羣開三A支平'); * > 音韻地位.描述; * '羣開三A支平' * ``` */ get 描述(): string; /** * 最簡描述 * @example * ```typescript * > 音韻地位 = Qieyun.音韻地位.from描述('幫三凡入'); * > 音韻地位.最簡描述; * '幫凡入' * > 音韻地位 = Qieyun.音韻地位.from描述('羣開三A支平'); * > 音韻地位.最簡描述; * '羣開A支平' * ``` */ get 最簡描述(): string; /** * 表達式,可用於 [[`屬於`]] 函數 * @example * ```typescript * > 音韻地位 = Qieyun.音韻地位.from描述('幫三凡入'); * > 音韻地位.表達式; * '幫母 開合中立 三等 不分重紐 凡韻 入聲' * > 音韻地位 = Qieyun.音韻地位.from描述('羣開三A支平'); * > 音韻地位.表達式; * '羣母 開口 三等 重紐A類 支韻 平聲' * ``` */ get 表達式(): string; /** * 音韻地位對應的編碼。音韻編碼與音韻地位之間存在一一映射關係。 * @example * ```typescript * > 音韻地位 = Qieyun.音韻地位.from描述('幫三凡入'); * > 音韻地位.編碼; * 'A9D' * > 音韻地位 = Qieyun.音韻地位.from描述('羣開三A支平'); * > 音韻地位.編碼; * 'fFA' * ``` */ get 編碼(): string; /** * 調整該音韻地位的屬性,會驗證調整後地位的合法性,返回新的對象。 * * **注意**:原對象不會被修改。 * * @param 調整屬性 對象,其屬性可為六項基本屬性中的若干項,各屬性的值為欲修改成的值。 * * 不含某屬性或某屬性值為 `undefined` 則表示不修改該屬性。 * * @returns 新的 `音韻地位`,其中會含有指定的修改值。 * @example * ```typescript * > 音韻地位 = Qieyun.音韻地位.from描述('幫三元上'); * > 音韻地位.調整({ 聲: '平' }).描述 * '幫三元平' * > 音韻地位.調整({ 母: '見', 呼: '合' }).描述 * '見合三元上' * ``` */ 調整(調整屬性: 音韻屬性): 音韻地位; /** * 判斷某個小韻是否屬於給定的音韻地位限定範圍。 * * 本方法可使用一般形式(`.屬於('...')`)或標籤模板語法(`` .屬於`...` ``)。 * * 標籤模板語法僅能用於字面值的字串,但寫出來較簡單清晰。在不嵌入參數時,兩者效果相同。建議當表達式為字面值時使用標籤模板語法。 * * @param 表達式 描述音韻地位的字串 * * 字串中音韻地位的描述格式: * * * 音韻地位六要素: * * `……母`, `……等`, `……韻`, `……聲` * * 呼:`開口`, `合口`, `開合中立` * * 重紐:`重紐A類`, `重紐B類`, `不分重紐` * * 拓展音韻地位: * * `……組`, `……音`, `……攝` * * 清濁:`全清`, `次清`, `全濁`, `次濁`, `清音`, `濁音` * * 韻別:`陰聲韻`, `陽聲韻`, `入聲韻` * * 其他表達式: * * `輕脣韻`:東鍾微虞廢文元陽尤凡韻三等(僅判斷韻與等,不判斷聲母) * * `次入韻`:祭泰夬廢韻 * * `仄聲`:上去入聲 * * `舒聲`:平上去聲 * * `鈍音`:幫見影組 * * `銳音`:鈍音以外聲母 * * 支援的運算子: * * * AND 運算子:`且`, `and`, `&`, `&&` * *   OR 運算子:`或`, `or`, `|`, `||` * * NOT 運算子:`非`, `not`, `~`, `!` * * 括號:`(……)`, `(……)` * * 各表達式及運算子之間以空格隔開。 * * AND 運算子可省略。 * * 如 `(端精組 且 入聲) 或 (以母 且 四等 且 去聲)` 與 `端精組 入聲 或 以母 四等 去聲` 同義。 * @returns 若描述音韻地位的字串符合該音韻地位,回傳 `true`;否則回傳 `false`。 * @throws 若表達式為空、不合語法、或限定條件不合法,則拋出異常。 * @example * ```typescript * > 音韻地位 = Qieyun.音韻地位.from描述('幫三凡入'); * > 音韻地位.屬於`章母`; // 標籤模板語法(表達式為字面值時推荐) * false * > 音韻地位.屬於('章母'); // 一般形式 * false * > 音韻地位.屬於`一四等`; * false * > 音韻地位.屬於`幫組 或 陽韻`; * true * ``` */ 屬於(表達式: string): boolean; /** * 判斷某個小韻是否屬於給定的音韻地位限定範圍(標籤模板語法)。 * * 嵌入的參數可以是: * * * 函數:會被執行;若其傳回值為字串,會遞迴套用至 [[`音韻地位.屬於`]] 函數,否則會檢測其真值 * * 字串:會遞迴套用至 [[`音韻地位.屬於`]] 函數 * * 其他:會檢測其真值 * * **注意**: * * * 該語法僅能用於字面值模板串,不能用於如 [[`.判斷`]] 等 * * `` .屬於`${...}` `` 和 `` .屬於(`${...}`) `` 不同,只有前者支持上述嵌入參數,後者的模板串會先被求值為普通字串。 * * @param 表達式 描述音韻地位的模板字串列表。 * @param 參數 要嵌入模板的參數列表。 * @returns 若描述音韻地位的字串符合該音韻地位,回傳 `true`;否則回傳 `false`。 * @throws 若表達式為空、不合語法、或限定條件不合法,則拋出異常。 * @example * ```typescript * > 音韻地位 = Qieyun.音韻地位.from描述('幫三凡入'); * > 音韻地位.屬於`一四等 或 ${音韻地位.描述 === '幫三凡入'}`; * true * ``` */ 屬於(表達式: readonly string[], ...參數: unknown[]): boolean; /** * 判斷某個小韻是否符合給定的某個條件,傳回自訂值。 * @param 規則 `[判斷式, 結果][]` 形式的陣列。 * * 判斷式可以是: * * *   函數:會被執行;若其傳回值為非空字串,會套用至 [[`音韻地位.屬於`]] 函數,若為布林值則直接決定是否跳過本規則,否則規則永遠不會被跳過 * * 非空字串:描述音韻地位的表達式,會套用至 [[`音韻地位.屬於`]] 函數 * *  布林值:直接決定是否跳過本規則 * *   其他:規則永遠不會被跳過(可用作指定後備結果) * * 建議使用空字串、`null` 或 `true` 作判斷式以指定後備結果。 * * 結果可以是任意傳回值或遞迴規則。 * @param error 若為 `true` 或非空字串,在未涵蓋所有條件時會拋出錯誤。 * @param fallback 若為 `true`,在遞迴子陣列未涵蓋所有條件時會繼續嘗試母陣列的條件。 * @returns 自訂值,在未涵蓋所有條件且不使用 `error` 時會回傳 `null`。 * @throws `未涵蓋所有條件`(或 `error` 參數), `規則需符合格式`, `無效的表達式`, `表達式為空`, `非預期的運算子`, `非預期的閉括號`, `括號未匹配` * @example * ```typescript * > 音韻地位 = Qieyun.音韻地位.from描述('幫三凡入'); * > 音韻地位.判斷([ * > ['遇果假攝 或 支脂之佳韻', ''], * > ['蟹攝 或 微韻', 'i'], * > ['效流攝', 'u'], * > ['深咸攝', [ * > ['舒聲', 'm'], * > ['入聲', 'p'] * > ]], * > ['臻山攝', [ * > ['舒聲', 'n'], * > ['入聲', 't'] * > ]], * > ['通江宕梗曾攝', [ * > ['舒聲', 'ng'], * > ['入聲', 'k'] * > ]] * > ], '無韻尾規則') * 'p' * ``` */ 判斷(規則: 規則, error?: E, fallback?: boolean): E extends Falsy ? T | null : T; /** * 判斷當前音韻地位是否等於另一音韻地位。 * @param other 另一音韻地位。 * @returns 若相等,則回傳 `true`;否則回傳 `false`。 * @example * ```typescript * > a = Qieyun.音韻地位.from描述('羣開三A支平'); * > b = Qieyun.音韻地位.from描述('羣開三A支平'); * > a === b; * false * > a.等於(b); * true * ``` */ 等於(other: 音韻地位): boolean; /** * 驗證給定的音韻地位六要素是否合法。此為最小程度的驗證,想要更強限定請用 [[`適配分析體系`]]。 * * 母必須為「幫滂並明端透定泥來知徹澄孃精清從心邪莊初崇生俟章昌常書船日 * 見溪羣疑影曉匣云以」三十八聲類之一。 * * 韻必須為「東冬鍾江支脂之微魚虞模齊祭泰佳皆夬灰咍廢眞臻文欣元魂痕 * 寒刪山仙先蕭宵肴豪歌麻陽唐庚耕清青蒸登尤侯幽侵覃談鹽添咸銜嚴凡」五十八韻之一。 * * 注意:不設諄、桓、戈韻。分別併入眞、寒、歌韻。 * * 當聲母為脣音,或韻母為「東冬鍾江虞模尤幽」(開合中立的韻)時,呼可以為 `null`。 * 在其他情況下,呼必須取「開」或「合」。 * * 當聲母為脣牙喉音,且韻母為「支脂祭眞仙宵侵鹽」八韻之一時,重紐必須取 `A` 或 `B`。 * 在其他情況下,重紐可以取 `null`。 * @param 母 聲母:幫, 滂, 並, 明, … * @param 呼 呼:`null`, 開, 合 * @param 等 等:一, 二, 三, 四 * @param 重紐 重紐:`null`, A, B * @param 韻 韻母(舉平以賅上去入):東, 冬, 鍾, 江, …, 祭, 泰, 夬, 廢 * @param 聲 聲調:平, 上, 去, 入 * @throws 若給定的音韻地位六要素不合法,則拋出異常。 */ static 驗證(母: string, 呼: string | null, 等: string, 重紐: string | null, 韻: string, 聲: string): void; /** * 將音韻編碼轉換為音韻地位。 * @param 音韻編碼 音韻地位的編碼 * @returns 給定的音韻編碼對應的音韻地位。 * @example * ```typescript * > Qieyun.音韻地位.from編碼('A9D'); * 音韻地位 { '幫三凡入' } * > Qieyun.音韻地位.from編碼('fFA'); * 音韻地位 { '羣開三A支平' } * ``` */ static from編碼(音韻編碼: string): 音韻地位; /** * 將音韻描述或最簡音韻描述轉換為音韻地位。 * @param 音韻描述 音韻地位的描述或最簡描述 * @returns 給定的音韻描述或最簡描述對應的音韻地位。 * @example * ```typescript * > Qieyun.音韻地位.from描述('幫三凡入'); * 音韻地位 { '幫三凡入' } * > Qieyun.音韻地位.from描述('羣開三A支平'); * 音韻地位 { '羣開三A支平' } * ``` */ static from描述(音韻描述: string): 音韻地位; } type 選項列表 = [ string, unknown ][]; type 推導選項 = Record; type 原始推導函數 = { (): 選項列表; (地位: 音韻地位, 字頭: string | null, 選項: 推導選項): T; }; /** * 推導函數,由 [[`建立`]] 產生。 * * @param 地位 欲推導的地位,**必須為 v2ext 體系的地位**,若地位來自其他資料,可用 [[`適配分析體系`]] 預處理。 * @param 字頭 推導時可提供字頭作為輔助資訊 * @param 選項 推導選項,未指定的 field 會以預設值填充 */ type 推導函數 = { (地位: 音韻地位, 字頭?: string | null, 選項?: 推導選項): T; readonly isLegacy: boolean; /** 該推導方案支持的選項,格式詳見 qieyun-autoderiver 及 qieyun-examples 說明 */ readonly parameters: 選項列表; /** 該推導方案預設選項 */ readonly defaultOptions: 推導選項; }; /** * 將原始推導方案函數包裝成易於使用的函數,並分析其所提供推導選項等。 * * @deprecated 該部分功能將從 Qieyun.js 分離成為獨立模塊 * @param rawFunction 推導方案原始函數。 * @returns 包裝後的函數,並含有選項等信息。 */ function 建立(rawFunction: 原始推導函數): 推導函數; } export { 音韻地位, 資料, 適配分析體系, 表達式, 推導方案 }; export type { 適配函數, 適配分析體系選項 };