You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将项目JSON传入TypeScript库以生成对应MyType类型?

实现方案

当然可以实现,核心思路是利用TypeScript的泛型和模块导入类型特性,让你的库能接收任意项目的JSON类型并导出对应的精确结构类型。

具体实现步骤

1. 库的核心代码

在你的库中,不要直接固定导入某个JSON文件,而是通过泛型来接收外部传入的JSON类型,同时封装复用的逻辑:

// 库文件:json-type-utils.ts
// 泛型工具类型,接收JSON数据类型并返回其结构类型
export type JsonType<T extends Record<string, any>> = T;

// 封装复用的运行时操作逻辑
export function processJsonData<T extends Record<string, any>>(data: T) {
  // 这里编写你需要在多个项目复用的后续操作
  return data;
}

2. 项目中使用库

在各个项目里,导入自身的JSON文件,通过库的泛型类型生成对应结构的类型:

// 项目文件:app.ts
import data from './mydata.json';
import { JsonType, processJsonData } from 'your-library-name';

// 生成与当前项目JSON完全匹配的类型
type MyType = JsonType<typeof data>;

// 调用库中复用的运行时逻辑
const processedData = processJsonData(data);

简化写法(仅类型复用)

如果只需要复用类型推导逻辑,还可以进一步简化库的代码:

// 库文件:json-type-utils.ts
export type MyType<T> = T;

项目中使用:

import data from './mydata.json';
import type { MyType } from 'your-library-name';

// 直接得到当前项目JSON对应的精确类型
type ProjectMyType = MyType<typeof data>;

这种方式下,ProjectMyType会完全继承项目中JSON文件的键结构和类型,和你之前直接写typeof data的效果完全一致,同时实现了逻辑的复用。


内容的提问来源于stack exchange,提问作者Bob Sheknowdas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 10:00:58