tscircuit - 电路开发的 React 范式 用TypeScript、React和 AI工具构建电子产品
“用 TypeScript、React 和 AI 工具构建电子产品。”

tscircuit 让电子开发如同 Web 开发般便捷。在您熟悉的 IDE 中编写代码,实时观察代码改动生成电路设计。完成后,直接导出项目并投入生产!
什么是 tscircuit?
tscircuit 是一个由注册中心、包管理器、命令行工具和 AI 电子设计套件共同支持的开发库,它能轻松实现电子电路的创建、共享、导出与生产制造。该库通过React Fiber 引擎将电路设计实时渲染为网页可视化界面。
你可以将 tscircuit 视为"电子领域的 React"—— 它允许开发者使用 TypeScript 和 React 设计真实世界的电子电路。其开发范式并非创建 "p" 等网页元素,而是定义 "芯片"、"电阻" 或 "电容" 等电路元件,最终渲染输出的也不是网站,而是 3D 的电路(可直接下单生产)!
通过 tscircuit,你甚至能设计出具备完整功能的键盘电路!完成设计后,可直接将方案导出至合作制造商,订购真实可用的电路板成品。
样例
一个 wifi 的测试板。可以点击以下链接直接查看:
https://tscircuit.com/seveibar/wifi-test-board-1#files ts 的代码:
import{Reg5vTo3v3 }from"@tsci/seveibar.reg-5v-to-3v"import{ useESP32_S3_MINI_1_N8 }from"@tsci/seveibar.esp32-s3-mini-1-n8"import{ useUsbC }from"@tsci/seveibar.smd-usb-c"import{ useResistor }from"@tscircuit/core"exportdefault() => {constUsb=useUsbC("USB")constEsp32=useESP32_S3_MINI_1_N8("U1")constR1=useResistor("R1", {resistance:"5.1k",footprint:"0402"})constR2=useResistor("R2", {resistance:"5.1k",footprint:"0402"})
return(
)}
对应的原理图:
对应的 PCB:
渲染的 3D:

如何使用?
可以使用tsci命令行工具完成tscircuit的所有操作。
npminstall -g tscircuittsci dev
打开浏览器:http://localhost:3020

从其它EDA工具中导入器件库
tscircuit 目前支持将立创eda 和 KiCad 的器件库导入成 tscircuit 的格式:



原理图/PCB 自动布线
您可以使用schAutoLayoutEnabled和pcbAutoLayoutEnabled两种工具自动布局原理图和 PCB。
import{SmdDiode}from"@tsci/seveibar.SmdDiode"import{Key}from"@tsci/seveibar.Key"import{Pico2}from"@tsci/seveibar.pico2"constrowToMicroPin = {0:"GP0",1:"GP1",2:"GP10",}constcolToMicroPin = {0:"GP19",1:"GP17",2:"GP5",}exportdefault() => (
{grid({ sizeX: 3, sizeY: 3, pitch: 19.05, offset: { x: 20, y: 0 } }).map( ({ x, y, row, col }, index) => { const schOffX = 5 + x/6 const schOffY = -y / 8 return (
) } )})func
tiongrid(opts: {sizeX:numbe
rsizeY:numberpitch:numberoffset?: { x:number; y:number}}):Array<{ x: number; y: number; row: number; col: number }> {const{ sizeX, sizeY, pitch, offset = {x:0,y:0} } = optsconstpoints:Array<{ x: number; y: number; row: number; col: number }> = []conststartX = (-(sizeX -1) * pitch) /2conststartY = (-(sizeY -1) * pitch) /2for(letrow =0; row < sizeY; row++) { for (let col = 0; col < sizeX; col++) { points.push({ x: startX + col * pitch + offset.x, y: startY + row * pitch + offset.y, row, col, }) }}return points}



- 韧性2025|合资与豪华车企,还有戏吗?
- “十四五”期间,上海保护修缮不可移动革命文物56处
- 朱丽叶·比诺什在海南电影节:我把自己作为一个工具
- 今年前11个月浙江义乌海铁联运发运量达11.28万标箱,今年前11个月浙江义乌海铁联运发运量达11.28万标箱
- 王文涛会见德国外长瓦德富尔,双方就中德、中欧经贸关系交换意见
- 2025长春健博会开幕 多国企业寻合作拓市场,2025长春健博会开幕 多国企业寻合作拓市场
- 阿瑟·米勒:马克·吐温有一种稳定的潜在严肃性,鲜有其匹
- 从鄂尔多斯到沙特胡拜尔!44岁教师登顶世界健美之巅,从鄂尔多斯到沙特胡拜尔!44岁教师登顶世界健美之巅
- 天津机场口岸今年来出入境客流逾百万人次,天津机场口岸今年来出入境客流逾百万人次
- 上海建立志愿者实名制信息库,以数字化提升志愿服务效能
- 首列舒适型中老铁路国际旅游列车开启跨国之旅,首列舒适型中老铁路国际旅游列车开启跨国之旅
- 燃油车全系配置高阶智能,福特新蒙迪欧上市挑战B级车市场格局
- 港产联动 广西防城港港企双向赋能成良性循环,港产联动 广西防城港港企双向赋能成良性循环
- 美国私营部门11月就业岗位意外减少3.2万个
- 瞬间涨停!A股尾盘利好突袭!六部门发文 有序发展直播电商等新业态
- 专访|指挥家托努·卡尔尤斯特:爱沙尼亚的远古和现代之声