やり方
TypeScriptとNode
このパッケージの型を使い、Nodeのサーバーやスクリプトで単語を引きます。
このパッケージは型を同梱していて、Node 22以降と、いまのブラウザで動きます。ESモジュールで、Node 22.12以降ならrequire()もできます。
型
import { gradeOf, type JlptLevel, levelOf, type SchoolGrade } from "@johnmorrisdotca/jisho";
import { GRADES } from "@johnmorrisdotca/jisho/grades";
import { JLPT } from "@johnmorrisdotca/jisho/jlpt";
import { loadWords, type Word, type WordsMode, wordsOf } from "@johnmorrisdotca/jisho/words";
const mode: WordsMode = "safe";
const words = await loadWords("かみ", { mode });
const first: Word | undefined = wordsOf(words, "かみ")[0];
const grade: SchoolGrade | null = gradeOf(GRADES, "語");
const level: JlptLevel | null = levelOf(JLPT, "語");
console.log(first?.written, grade, level);
export function refused(): void {
// @ts-expect-error "careful" is not a mode
void loadWords("かみ", { mode: "careful" });
}紙 2 N5Word、WordsMode、SchoolGrade、JlptLevelが、関数が受け取るものと返すものを表します。存在しないモードは、実行時に驚くのではなく、型エラーになります。最後の関数がその例で、呼び出しの前の行が、TypeScriptに「ここでエラーになる」と伝えるものです。"moduleResolution"が"bundler"、"node16"、"nodenext"のとき、どのエントリポイントにも型があります。
Nodeで
import { loadWords, wordsOf } from "@johnmorrisdotca/jisho/words";
const words = await loadWords("かみ");
for (const one of wordsOf(words, "かみ").slice(0, 3)) console.log(one.written, one.meaning);紙 paper
神 god, deity, divinity; god-tier, incredible, fantastic
髪 hair (on the head)Nodeはインストールされたパッケージからチャンクを読むので、スクリプトやサーバーにバンドラーは要りません。最初に読んだチャンクは次の検索のために覚えておきます(最大64チャンク)。キャッシュの仕組みと検索の費用は単語を引くにあります。
この日本語は、まだ日本語を母語とする方の確認を受けていません。訂正を歓迎します。