Lingara Lingara 說明文件 學習指南 API 函式庫 應用程式 起造 網頁版
語言: 閩南語

TypeScript

這頁是對英文翻譯過來的。若兩篇無仝,以英文頁為準。 看英文頁

TypeScript 函式庫是 npm 頂面的 @lingara/api 套件。伊佇 Node.js 22 抑是較新的版本頂面行,無執行期相依套件,閣為逐个請求、回應佮串流事件提供型別定義。

佇佗位行

伊是一个伺服器端函式庫。伊無瀏覽器版本,用戶端若發現家己佇網頁內底,就會拒絕收用戶端密鑰:囥佇瀏覽器內底的用戶端密鑰就等於公開的密鑰,任何人拍開彼个網頁攏看會著。請佇你家己的伺服器呼叫 API,干焦共使用者需要的物件傳予 in。

用起來按怎

  • 逐个呼叫攏會回傳一个 promise。傳 { signal } 閣加一个 AbortSignal 就會當取消呼叫;按呢呼叫就會用彼个 signal 家己的原因予人拒絕。
  • 串流是一个非同步可迭代物件,用 for await 來讀。伊是惰性的:愛等你討頭一个事件的時陣,請求才會送出去。
  • 錯誤繼承自 LingaraError,所以一擺 instanceof 檢查就會當共四種攏總掠起來。若 API 講明愛等偌久,逐个錯誤攏會紮 retryAfter。
  • 想欲用你家己的 HTTP 堆疊,就佇選項內底傳一个 fetch 函式。串流的閒置逾時猶原適用。

下面的範例會安裝套件、建立用戶端、用串流提一份詞彙清單,閣處理錯誤。

TypeScript

npm install @lingara/api@0.1.0-alpha.6

TypeScript

import { Lingara } from "@lingara/api";

const client = new Lingara({
  clientId: process.env.LINGARA_CLIENT_ID!,
  clientSecret: process.env.LINGARA_CLIENT_SECRET!,
});

TypeScript

const stream = client.generateVocabulary({ level: 2, source_lang: "en", target_lang: "zh", count: 8 });
for await (const ev of stream) {
  if (ev.event === "item") console.log(ev.data.word, ev.data.translation);
}

TypeScript

import { ApiError, MaintenanceError, OAuthError, TransportError } from "@lingara/api";

try {
  await client.getUsage();
} catch (e) {
  if (e instanceof ApiError) {
    // A refusal from the API: e.status, e.code (stable) and e.message (localised).
    console.error(e.status, e.code, e.message, e.retryAfter ?? "");
  } else if (e instanceof OAuthError) {
    // The token endpoint refused the credentials or the scopes.
    console.error(e.status, e.error, e.description ?? "");
  } else if (e instanceof MaintenanceError) {
    console.error("under maintenance; retry after", e.retryAfter ?? "a while");
  } else if (e instanceof TransportError) {
    // No usable answer: connect, tls, reset, timeout, and so on.
    console.error("transport:", e.kind);
  } else {
    throw e;
  }
}

這頁包的內容