@art-site/art-core-ts-json (英语)
在TypeScript中与JSON合作的无缝,类型安全的公用事业.
为什么是这个模块?
在JavaScript和TypeScript中与JSON合作很常见,但标准API缺乏类型安全,工效学帮助器,以及强力转换工具. 开发者往往需要验证,转换,并操纵JSON数据,但TypeScript的型号系统并不在本土上支持JSON结构,而JSON与其他JavaScript类型的转换可能很乏味并容易出错.
- JSON 的脚本类型 : 用途 类型庆典Json类型.
- TypeScript 支持的常用工具: 包括以类型安全方式与JSON数据合作的类型守卫和助手.
- 转换公用事业: 使得JSON与其他JavaScript类型之间易于转换,包括递归转换和正常化.
安装和使用示例( 需要)
用 npm 安装 :
npm install @art-suite/art-core-ts-json
基本用途:
import {
JsonValue,
JsonObject,
isJsonObject,
isJsonArray,
toJsonValue,
toJsonObject,
toJsonPropsObject,
asJsonObject,
jsonToJs,
} from "@art-suite/art-core-ts-json";
// Type-safe checks
const value: unknown = { foo: "bar" };
if (isJsonObject(value)) {
// value is now typed as JsonObject
}
// Convert any value to a valid JsonValue (recursively)
const json: JsonValue = toJsonValue(new Date());
// Convert to JsonObject (recursively)
const obj: JsonObject = toJsonObject({ foo: 1, bar: "baz" });
// Get only scalar properties
const props = toJsonPropsObject({ foo: 1, bar: "baz", nested: { a: 2 } });
// Fast, shallow type check
asJsonObject({ foo: 1 }); // returns { foo: 1 }
asJsonObject("not an object"); // returns {}
// Convert JSON back to JS/TS code string
jsonToJs({ foo: "bar", arr: [1, 2, 3] });
职能概览
JSON 的脚本类型
JsonValue- 任何有效的 JSON 值(对象、阵列、字符串、数字、布尔或无效)JsonObject- JSON目标({ [key: string]: JsonValue }(中文(简体) )JsonArray- JSON阵列(JsonValue[](中文(简体) )JsonPrimitive- JSON scalar(弦、数、布尔或无)JsonPropsObject—— JSON 对象,只有平面值
类型警卫和公用事业
isJsonObject(value)——检查一个值是否为 JSON 对象isJsonArray(value)——检查一个值是否为 JSON 数组isJsonPrimitive(value)——检查一个值是否为 JSON scalarisJsonString(value)——检查一个值是否为 JSON 字符串isJsonNumber(value)——检查一个值是否为 JSON 数字isJsonBoolean(value)——检查一个值是否为 JSON 布尔值
转换水电费
toJsonValue(value, normalizeKeys?)— 递归性地将任何值转换为有效值JsonValuetoJsonObject(value, normalizeKeys?)— 递归性地将任何值转换为有效值JsonObjecttoJsonObjectOrNull(value, normalizeKeys?)- 喜欢toJsonObject返回时null用于无效输入toJsonPropsObject(value)返回 JSON 对象,只具有斯卡尔属性asJsonObject(value)- JSON 对象的快速、浅色类型检查
JSON改为JS/TS守则
jsonToJs(value)——将 JSON 值转换为相当印刷的 JS/TS 代码字符串
API 文档参考
关于所有被输出功能及其参数的详细信息,请参见源代码内的TypeScript打字和JSDoc评论.