TypeScript
Trang này được dịch từ tiếng Anh. Nếu hai bản khác nhau, trang tiếng Anh là bản đúng. Đọc trang tiếng Anh
Thư viện TypeScript là gói @lingara/api trên npm. Thư viện chạy trên Node.js 22 trở lên, không có phụ thuộc lúc chạy, và đi kèm định nghĩa kiểu cho mọi yêu cầu, phản hồi và sự kiện luồng.
Nơi thư viện chạy
Đây là thư viện phía máy chủ. Không có bản dựng cho trình duyệt, và máy khách sẽ từ chối khóa bí mật máy khách khi nhận thấy mình đang chạy trong một trang web: khóa bí mật máy khách trong trình duyệt là một bí mật đã bị công khai, ai mở trang cũng đọc được. Hãy gọi API từ máy chủ của bạn và chỉ gửi cho người dùng những gì họ cần.
Cách sử dụng
- Mọi lệnh gọi đều trả về một promise. Truyền
{ signal }cùng mộtAbortSignalđể hủy lệnh gọi; khi đó lệnh gọi bị từ chối với lý do của chính tín hiệu. - Luồng là một đối tượng lặp bất đồng bộ, được đọc bằng
for await. Luồng có tính lười: yêu cầu chỉ được gửi khi bạn yêu cầu sự kiện đầu tiên. - Các lỗi kế thừa
LingaraError, nên một phép kiểm trainstanceofbắt được cả bốn loại. Mỗi lỗi mang theoretryAfterkhi API có nêu thời gian chờ. - Để dùng ngăn xếp HTTP của riêng bạn, hãy truyền một hàm
fetchtrong phần tùy chọn. Thời gian chờ khi rảnh của luồng vẫn được áp dụng.
Các mẫu dưới đây cài đặt gói, tạo máy khách, phát trực tuyến một danh sách từ vựng và xử lý lỗi.
TypeScript
npm install @lingara/api@0.1.0-alpha.6TypeScript
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;
}
}