@ dedgefirst-dev/ data (日语)
一个TypeScript工具库,用于安全地解析和处理来自各种来源的结构化数据,例如: FormData, (中文(简体) ), URLSearchParamsJSON的物体 还有更多 这个 Data class 提供了定义数据传输对象(DTOs)的结构化方法,而专门的解析器则允许类型安全访问窗体字段,URL搜索参数和通用对象.
安装
bun add @edgefirst-dev/data
使用量
导入
用来使用 Data 类,从软件包根导入:
import { Data } from "@edgefirst-dev/data";
用来使用 Parser 基准类或专门分析器之一(FormParser, (中文(简体) ), SearchParamsParser, (中文(简体) ), ObjectParser,从 parser 模块 :
import {
Parser,
FormParser,
SearchParamsParser,
ObjectParser,
} from "@edgefirst-dev/data/parser";
数据类
这个 Data 类旨在定义一组属性,这些属性可以从源中解析,例如 FormData, (中文(简体) ), URLSearchParams或者JSON对象 你个小班 Data 以定义特定的 DTO,使用解析器提取和验证值.
示例
import { Data } from "@edgefirst-dev/data";
import { FormParser } from "@edgefirst-dev/data/parser";
class LoginData extends Data<FormParser> {
get username() {
return this.parser.string("username");
}
get password() {
return this.parser.string("password");
}
}
const formData = new FormData();
formData.append("username", "johndoe");
formData.append("password", "secret");
const loginData = new LoginData(new FormParser(formData));
console.log(loginData.username); // "johndoe"
console.log(loginData.password); // "secret"
解析器类
解析器基础类
这个 Parser class 是一个抽象的基础类,旨在解析和验证来自结构化来源的数据。 专门解析器将这一类扩展为处理特定数据类型,确保类型安全地进入需要的字段.
窗体辅助器
FormParser 是一个专门解析器,可以覆盖 FormData 并提供了以安全和类型验证的方式进入形成字段的方法.
示例
import { FormParser } from "@edgefirst-dev/data/parser";
const formData = new FormData();
formData.append("username", "johndoe");
const parser = new FormParser(formData);
console.log(parser.string("username")); // "johndoe"
搜索守护进程
SearchParamsParser 从 a 提取并验证 URL 查询参数 URLSearchParams 对象, URL, (中文(简体) ), Request,或 URL 字符串.
示例
import { SearchParamsParser } from "@edgefirst-dev/data/parser";
const url = new URL("https://example.com/?search=query");
const parser = new SearchParamsParser(url);
console.log(parser.get("search")); // "query"
对象打印器
ObjectParser 安全访问和验证平原 JavaScript 对象内的值,确保检索值的类型正确.
示例
import { ObjectParser } from "@edgefirst-dev/data/parser";
const data = { name: "Alice", age: 30 };
const parser = new ObjectParser(data);
console.log(parser.string("name")); // "Alice"
console.log(parser.number("age")); // 30
处理错误
当验证失败时, 所有解析器类都会丢出专门错误 :
Parser.MissingKeyError: 缺少所需密钥时抛出.Parser.InvalidTypeError: 当一个值不是预期类型时抛出.Parser.InvalidInstanceOfError: 当一个值不是预期类的实例时丢出.Parser.CoercionError: 当一个值不能被强制用于预期类型时被丢弃.
每一个都扩大了基础 Parser.Error 类,这样您就可以用单曲记录所有解析错误 instanceof 条件.
示例
import { ObjectParser } from "@edgefirst-dev/data/parser";
try {
const data = { name: "Alice", age: 30 };
const parser = new ObjectParser(data);
console.log(parser.string("email")); // Throws Parser.MissingKeyError
} catch (error) {
if (error instanceof Parser.MissingKeyError) {
// Handle missing key error
}
if (error instanceof Parser.Error) {
// Handle other parser errors
}
throw error; // Re-throw unexpected errors
}
许可证
见 自由主义