当前位置: 首页 > news >正文

【TS学习】(15)分布式条件特性

在 TypeScript 中,分布式条件类型(Distributive Conditional Types) 是一种特殊的行为,发生在条件类型作用于裸类型参数(Naked Type Parameter) 时。这种特性使得条件类型可以“分布”到联合类型的每个成员上,从而对联合类型进行逐个处理。


1. 分布式条件类型的基本概念

(1) 定义
  • 当条件类型作用于一个裸类型参数(即没有被包裹的泛型参数),并且该参数是一个联合类型时,TypeScript 会将条件类型“分发”到联合类型的每个成员上。
  • 这种行为称为分布式条件类型
(2) 语法
type Distributed<T> = T extends U ? X : Y;
  • 如果 T 是一个联合类型(如 A | B | C),则条件类型会分别对 ABC 应用 T extends U ? X : Y,并将结果重新组合成一个新的联合类型。

2. 示例:分布式条件类型的作用

示例 1:基本行为
type IsString<T> = T extends string ? true : false;type Result = IsString<string | number>; // true | false

在这里:

  • string | number 是一个联合类型。
  • 条件类型 IsString 会被“分发”到 stringnumber 上:
    • stringstring extends string ? true : falsetrue
    • numbernumber extends string ? true : falsefalse
  • 最终结果是 true | false

示例 2:提取字符串类型
type ExtractStrings<T> = T extends string ? T : never;type Result = ExtractStrings<string | number | boolean>; // string

在这里:

  • ExtractStrings 会逐个检查联合类型的每个成员:
    • stringstring extends string ? string : neverstring
    • numbernumber extends string ? number : nevernever
    • booleanboolean extends string ? boolean : nevernever
  • 最终结果是 string

3. 阻止分布式条件类型

如果不想让条件类型“分布”,可以通过将裸类型参数包裹起来(例如使用数组或元组)来阻止分发。

示例:阻止分发
type IsString<T> = [T] extends [string] ? true : false;type Result = IsString<string | number>; // false

在这里:

  • [T]T 包裹在数组中,阻止了分发。
  • 整个联合类型 string | number 被视为一个整体,而不是逐个成员处理。
  • 因为 string | number 不是 string 的子类型,所以结果是 false

4. 实际应用场景

分布式条件类型在实际开发中有许多用途,以下是一些常见的场景:

(1) 过滤联合类型

你可以使用分布式条件类型从联合类型中提取满足条件的成员。

示例:过滤出可调用的类型
type FilterCallable<T> = T extends (...args: any[]) => any ? T : never;type MixedTypes = string | (() => void) | number | ((x: number) => number);type CallableTypes = FilterCallable<MixedTypes>; // () => void | ((x: number) => number)

在这里:

  • FilterCallable 提取了所有可调用的类型。

(2) 提取键名

你可以使用分布式条件类型提取对象的键名。

示例:提取值为字符串的键
type KeysOfType<T, U> = {[K in keyof T]: T[K] extends U ? K : never;
}[keyof T];type Data = {name: string;age: number;email: string;
};type StringKeys = KeysOfType<Data, string>; // "name" | "email"

在这里:

  • KeysOfType 提取了值类型为 string 的键名。

(3) 类型转换

你可以使用分布式条件类型对联合类型的每个成员进行转换。

示例:为每个成员添加前缀
type AddPrefix<T, Prefix extends string> = T extends string? `${Prefix}${T}`: never;type Colors = "red" | "green" | "blue";type PrefixedColors = AddPrefix<Colors, "color_">; // "color_red" | "color_green" | "color_blue"

在这里:

  • AddPrefix 为联合类型的每个成员添加了前缀。

5. 注意事项

(1) 裸类型参数是关键
  • 分布式条件类型只会在裸类型参数上触发。
  • 如果类型参数被包裹(例如放在数组或元组中),分发行为会被阻止。
示例:裸类型与包裹类型的区别
type Distribute<T> = T extends string ? true : false;
type NoDistribute<T> = [T] extends [string] ? true : false;type Result1 = Distribute<string | number>; // true | false
type Result2 = NoDistribute<string | number>; // false
(2) 避免意外分发
  • 如果不希望触发分发,可以通过包裹类型参数来显式阻止。

6. 总结

  • 分布式条件类型的核心作用
    • 对联合类型的每个成员逐个应用条件类型。
    • 支持灵活地过滤、转换和操作联合类型。
  • 关键点
    • 裸类型参数是触发分发的关键。
    • 可以通过包裹类型参数阻止分发。
  • 实际场景
    • 过滤联合类型。
    • 提取键名或特定类型的成员。
    • 动态转换联合类型的成员。

相关文章:

【TS学习】(15)分布式条件特性

在 TypeScript 中&#xff0c;分布式条件类型&#xff08;Distributive Conditional Types&#xff09; 是一种特殊的行为&#xff0c;发生在条件类型作用于裸类型参数&#xff08;Naked Type Parameter&#xff09; 时。这种特性使得条件类型可以“分布”到联合类型的每个成员…...

四款高效数据报表工具 让数据分析更简单

概述 在数字化时代&#xff0c;企业和组织越来越依赖数据驱动决策&#xff0c;报表软件成为提高数据可视化能力、优化业务管理的关键工具。本文将为大家介绍四款功能强大的报表软件&#xff0c;帮助不同需求的企业找到合适的解决方案。 一、山海鲸报表 山海鲸报表是一款零代…...

QT 非空指针 软件奔溃

在用QT的实际项目中&#xff0c;出现如下现象&#xff1a; 运行软件再关闭软件&#xff0c;然后再运行软件会崩溃。等待5~10分钟&#xff0c;再运行软件&#xff0c;又正常&#xff0c;百思不得其解&#xff0c;后面找到原因是在头文件里定义指针变量时没有赋初nullptr&#x…...

图漾相机——C#语言属性设置

文章目录 前言1.示例程序说明2.SDK API功能介绍2.1 ListDevice2.2 Open2.3 OpenDeviceByIP2.4 Close2.5 DeviceStreamEnable2.6 DeviceStreamFormatDump2.7 DeviceStreamFormatConfig2.8 DeviceReadCurrentEnumData2.9 DeviceReadCalibData2.10 DeviceStreamOn2.11 DeviceStrea…...

WPF中viewmodel单例模式

1、单例模式介绍 单例模式是一种创建型设计模式&#xff0c;确保一个类只有一个实例&#xff0c;并提供一个全局访问点来获取这个实例。它常用于需要全局唯一访问点的场景&#xff0c;如配置管理、日志记录、数据库连接等。 2、WPF 中 ViewModel 的单例实现 在 WPF 中&#…...

AI比人脑更强,因为被植入思维模型【36】时光机理论思维

giszz的理解&#xff1a;据说是软银孙正义提出的一种思维模型&#xff0c;他利用同一时间内的地区差&#xff0c;通过引入技术、思维&#xff0c;在同一地区&#xff0c;形成了时间差。所谓商业模式&#xff0c;有时就是打空间差、时间差&#xff0c;信息差。 一、定义 时光机…...

SQL Server:用户权限

创建 & 删除 1. 创建用户命令整理 创建 admin2 用户 -- 在 master 数据库创建登录名 USE master; BEGINCREATE LOGIN [admin2] WITH PASSWORDNCljslrl0620!, DEFAULT_DATABASE[master], CHECK_EXPIRATIONOFF, CHECK_POLICYON; END;-- 在 db03 数据库创建用户并添加到相应…...

Qt之QTextEdit控制文本滚动, 停止滚动, 开始滚动, 鼠标控制滚动

对工作台文本框进行控制。含以下内容。详细说明在源码中可查看 至最底部停止滚动开始滚动 源码分两部分. .h文件和.cpp文件 MyTextEdit.h #ifndef MYTEXTEDIT_H #define MYTEXTEDIT_H#include <QObject> #include <QTextEdit> #include <QScrollBar> #includ…...

策略模式与元数据映射模式融合 JSR 380 验证规范实现枚举范围校验

类文件 Target({ElementType.METHOD,ElementType.FIELD,ElementType.ANNOTATION_TYPE,ElementType.CONSTRUCTOR,ElementType.PARAMETER,ElementType.TYPE_USE }) Retention(RetentionPolicy.RUNTIME) Documented Constraint(validatedBy {InEnumValidator.class, InEnumColle…...

9对象树(3)

目录 创建自定义的类&#xff0c;最主要的目的,是自定义一个析构函数,在析构函数中,完成打印.方便咱们看到最终的自动销毁对象的效果!!! 写完一个函数的声名之后, 按下 altenter, 在按下enter就可以自动的在对应的 cpp 文件中添加函数的定义了 内置类型&#xff0c;析构不会明…...

深入 OpenPDF:高级 PDF 生成与操作技巧

1 引言 1.1 项目背景 在许多企业级应用中,生成和操作 PDF 文档是一个常见的需求。PDF(Portable Document Format)因其格式统一、易于打印和分发而被广泛使用。本文将介绍如何使用 OpenPDF 库在 Java 项目中生成和操作 PDF 文档。 1.2 技术选型理由 OpenPDF:OpenPDF 是一…...

电脑屏幕亮度随心控,在Windows上自由调整屏幕亮度的方法

调整电脑屏幕的亮度对于保护视力和适应不同环境光线条件非常重要。无论是在白天强光下还是夜晚昏暗环境中&#xff0c;合适的屏幕亮度都能让您的眼睛更加舒适。本文中简鹿办公小编将向您介绍几种在 Windows 系统中调整屏幕亮度的方法。 方法一&#xff1a;使用快捷键 大多数笔…...

Navicat导出mysql数据库表结构说明到excel、word,单表导出方式记录

目前只找到一张一张表导出的方式 使用information_schema传入表名查询 字段名根据需要自行删减&#xff0c;一般保留序号、字段名、类型、说明就行 SELECT COLUMNS.ORDINAL_POSITION AS 序号, COLUMNS.COLUMN_NAME AS 字段名, COLUMNS.COLUMN_TYPE AS 类型(长度), COLUMNS.N…...

【C++笔记】C++常见二叉树OJ和拓扑排序

【C笔记】C常见二叉树OJ和拓扑排序 &#x1f525;个人主页&#xff1a;大白的编程日记 &#x1f525;专栏&#xff1a;C笔记 文章目录 【C笔记】C常见二叉树OJ和拓扑排序前言一.二叉树OJ1.1 根据二叉树创建字符串1.2 二叉树的层序遍历1.3 二叉树的最近公共祖先1.4 将二叉搜索…...

ARM-----数据处理、异常处理、模式切换

实列一&#xff1a; 1. 异常向量表 area reset, code, readonly code32 entry area reset, code, readonly&#xff1a;定义一个名为reset的代码区域&#xff0c;只读。 code32&#xff1a;指示编译器生成32位ARM指令。 entry&#xff1a;标记程序的入口点。 2. 程序入口…...

mapbox基础,使用geojson加载line线图层,实现铁路黑白间隔效果

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:mapbox 从入门到精通 文章目录 一、🍀前言1.1 ☘️mapboxgl.Map 地图对象1.2 ☘️mapboxgl.Map style属性1.3 ☘️line线图层样式二、🍀使用geojson加载…...

Python FastAPI + Celery + RabbitMQ 分布式图片水印处理系统

FastAPI 服务器Celery 任务队列RabbitMQ 作为消息代理定时任务处理 首先创建项目结构&#xff1a; c:\Users\Administrator\Desktop\meitu\ ├── app/ │ ├── __init__.py │ ├── main.py │ ├── celery_app.py │ ├── tasks.py │ └── config.py…...

阶段项目:Windows 服务器的组建与管理

项目概述 公司简介 创鑫公司是一家新成立的小型 IT 公司 公司决定组建部署一个小型的企业网络 员工人数不到20人 使用一台独立的 Windows 服务器提供各种网络服务 网络拓扑 设计需求 权限部分 权限部分要求 公司的网络管理员对办公计算机和服务器分别进行独立管理&#xff…...

【408】26考研-王道计算机408

王道408考研全套视频资料&#xff1a; 讲义01.26考研王道计算机【C语言督学营】02.【408领学班】26考研王道计算机B站独家03.26考研王道计算机【组成原理领学班】04.26王道计算机【计算机网络领学班】05.26考研王道计算机【数据结构领学班】06.26王道计算机【操作系统领学班】…...

数据分析问题思考路径

一、思考问题 1. 确认问题 因为背景: 因为5月1日的营业额突然下滑了10%,而历史从未出现过类似的跌幅 我想目的: 我想知道本次下滑的原因以此避免再出现这样的异常情况 现在思路: 现在能想到是原因是节假日和产品环节转化异常 最后感谢: 想请你帮我取数分析一下&#xff0c…...

vue省市区懒加载,用el-cascader 新增和回显

el-cascader对于懒加载有支持方法&#xff0c;小难点在于回显的时候&#xff0c;由于懒加载第一次只有一层&#xff0c;所以要根据选中id数组一层层的加载。 子组件 <template><el-cascaderref"cascaderRef"v-model"selectedValue":props"…...

从零构建大语言模型全栈开发指南:第三部分:训练与优化技术-3.3.3领域适配案例:医疗文本分类与法律合同生成

👉 点击关注不迷路 👉 点击关注不迷路 👉 点击关注不迷路 文章大纲 从零构建大语言模型全栈开发指南-第三部分:训练与优化技术-3.3.3 领域适配案例:医疗文本分类与法律合同生成1. 领域适配的核心挑战与解决方案2. 医疗文本分类:从通用到专业的跃迁2.1 医疗领域适配的技…...

Web网页内嵌 Adobe Pdf Reader 谷歌Chrome在线预览编辑PDF文档

随着数字化办公的普及&#xff0c;PDF文档已成为信息处理的核心载体&#xff0c;虽然桌面端有很多软件可以实现预览编辑PDF文档&#xff0c;而在线在线预览编辑PDF也日益成为一个难题。 作为网页内嵌本地程序的佼佼者——猿大师中间件&#xff0c;之前发布的猿大师办公助手&am…...

Python WebSockets 库详解:从基础到实战

1. 引言 WebSocket 是一种全双工、持久化的网络通信协议&#xff0c;适用于需要低延迟的应用&#xff0c;如实时聊天、股票行情推送、在线协作、多人游戏等。相比传统的 HTTP 轮询方式&#xff0c;WebSocket 减少了带宽开销&#xff0c;提高了实时性。 在 Python 中&#xff…...

php根据一个数组里面的元素顺序来排序另外一个数组的的顺序

根据arr2的顺序来排序arr $arr [[size_id > 9],[size_id > 1],[size_id > 1],[size_id > 6],[size_id > 6],[size_id > 8],];$arr2 [1,9,6,8];usort($arr, function ($item1, $item2) use ($arr2) {return array_search($item1[size_id], $arr2) - array_s…...

从JVM到分布式锁:高并发架构设计的六把密钥

【300秒速览分布式核心技术栈】 作为十年架构老兵&#xff0c;今天用一张图说透高并发系统的底层逻辑&#xff1a; &#x1f511; ​JVM锁&#xff1a;synchronized与AQS构筑单机防线&#xff0c;却难逃分布式困局 &#x1f511; ​数据库锁&#xff1a;MySQL行锁/间隙锁守住…...

《深度剖析SQL游标:复杂数据处理场景下的智慧抉择》

在数据库领域的广袤天地中&#xff0c;SQL游标宛如一把独特的钥匙&#xff0c;为复杂数据处理场景开启了一扇充满可能的大门。它以一种细腻且精准的方式&#xff0c;穿梭于数据库的记录之间&#xff0c;为众多棘手的数据处理难题提供了解决之道。 复杂数据处理场景的挑战 随着…...

【数据分享】中国3254座水库集水区特征数据集(免费获取)

水库在水循环、碳通量、能量平衡中扮演关键角色&#xff0c;实实在在地影响着我们的生活。其功能和环境影响高度依赖于地理位置、上游流域属性&#xff08;如地形、气候、土地类型&#xff09;和水库自身的动态特征&#xff08;如水位、蒸发量&#xff09;。但在此之前一直缺乏…...

【蓝桥杯每日一题】4.1

&#x1f3dd;️专栏&#xff1a; 【蓝桥杯备篇】 &#x1f305;主页&#xff1a; f狐o狸x "今日秃头刷题&#xff0c;明日荣耀加冕&#xff01;" 今天我们来练习二分算法 不熟悉二分算法的朋友可以看&#xff1a;【C语言刷怪篇】二分法_编程解决算术问题-CSDN博客 …...

PHY——LAN8720A 代码解析 (三)

文章目录 PHY——LAN8720A 代码解析 (三)PHY 源码解析ETH_PHY_IO_InitETH_PHY_IO_DeInitETH_PHY_IO_WriteRegETH_PHY_IO_ReadRegETH_PHY_IO_GetTick LAN8720 源码解析LAN8720_RegisterBusIOLAN8720_InitLAN8720_DisablePowerDownModeLAN8720_EnablePowerDownMode PHY——LAN872…...

【工具】BioPred一个用于精准医疗中生物标志物分析的 R 软件包

介绍 R 语言包 BioPred 提供了一系列用于精准医疗中的亚组分析和生物标志物分析的工具。它借助极端梯度提升&#xff08;XGBoost&#xff09;算法&#xff0c;并结合倾向得分加权和 A 学习方法&#xff0c;帮助优化个体化治疗规则&#xff0c;从而简化亚组识别过程。BioPred 还…...

如何修复 SQL Server 数据库中的恢复挂起状态?

原文&#xff1a;如何修复 SQL Server 数据库中的恢复挂起状态&#xff1f; | w3cschool笔记 当我们想与关系数据库交互时&#xff0c;SQL 就会出现并帮助用户与数据库进行交互。SQL 从高级语言中获取用户的输入&#xff0c;然后访问将代码转换为机器可理解的形式。SQL 确实会…...

C++11QT复习 (十)

基类与派生类之间的转换 **Day7-4 基类与派生类之间的转换****一、问题回顾****二、基类与派生类间的转换****1. 类型适应&#xff08;Upcasting&#xff09;****2. 逆向转换&#xff08;Downcasting&#xff09;** **三、代码示例****四、派生类间的复制控制****五、总结****1…...

Linux——冯 • 诺依曼体系结构操作系统初识

目录 1. 冯 • 诺依曼体系结构 1.1 冯•诺依曼体系结构推导 1.2 内存提高冯•诺依曼体系结构效率的方法 1.3 理解数据流动 2. 初步认识操作系统 2.1 操作系统的概念 2.2 设计OS的目的 3. 操作系统的管理精髓 1. 冯 • 诺依曼体系结构 1.1 冯•诺依曼体系结构推导 计算…...

JVM 学习计划表(2025 版)

JVM 学习计划表&#xff08;2025 版&#xff09; &#x1f4da; 基础阶段&#xff08;2 周&#xff09; 1. JVM 核心概念 ​JVM 作用与体系结构 理解 JVM 在 Java 跨平台运行中的核心作用&#xff0c;掌握类加载子系统、运行时数据区、执行引擎的交互流程​内存结构与数据存…...

arm_mat_init_f32用法 dsp库

arm_mat_init_f32 是 CMSIS DSP 库中的一个函数&#xff0c;用于初始化一个浮点矩阵结构体。以下是其使用方法&#xff1a; 函数原型 c复制 void arm_mat_init_f32(arm_matrix_instance_f32 * S,uint16_t nRows,uint16_t nColumns,float32_t * pData ); 参数说明 S&#xf…...

【蓝桥杯14天冲刺课题单】Day3

1. 题目链接&#xff1a;1025 答疑 贪心类型的题目做法很简单&#xff0c;只需要保证局部解最优即可保证整体解最优。 这里的思路就是第i个学生前面的人答疑所用的时间最短&#xff0c;那么他所发送短信的时间节点越小。这道题目有个需要注意的点是&#xff1a;要先将前i-1个…...

基于开源AI大模型与S2B2C模式的线下服务型门店增长策略研究——以AI智能名片与小程序源码技术为核心

摘要 在传统零售行业中&#xff0c;商品零售可通过无限流量实现销量增长&#xff0c;但服务型门店&#xff08;如餐饮、医疗、美容等&#xff09;因受限于地理位置、服务承载能力及非标化服务特性&#xff0c;需从“流量驱动”转向“复购驱动”增长模式。本研究以“开源AI大…...

批量修改图像命名

打开存放图片的文件 ctrA全选 找到功能栏上的三个点的位置&#xff0c;点击选择复制路径 打开一个Excel表格 将复制的图片路径复制到Excel表格中 选中刚复制的图片路径&#xff0c;点击选择数据->分列->分列 在打开的窗口中选中分隔符号&#xff0c;在点击下一步 选中…...

linux-- 0. C语言过、Java半静对、Python纯动和C++对+C

学习目标&#xff1a; java,CPYTHONC 学习内容&#xff1a; java,CPYTHONC 目录 学习目标&#xff1a; 学习内容&#xff1a; java 纯解释型语言&#xff08;如 Python&#xff09;的对比‌ C语言与Java的核心区别 java,C PYTHON C 学习时间&#xff1a; 学习产出…...

程序化广告行业(50/89):Cookie映射技术深度剖析

程序化广告行业&#xff08;50/89&#xff09;&#xff1a;Cookie映射技术深度剖析 大家好&#xff01;一直以来&#xff0c;我都希望能和大家一起深入探索程序化广告行业&#xff0c;共同学习进步。在之前的分享中&#xff0c;我们已经了解了程序化广告的很多关键内容&#x…...

大语言模型智体的综述:方法论、应用和挑战(下)

25年3月来自北京大学、UIC、广东大亚湾大学、中科院计算机网络信息中心、新加坡南阳理工、UCLA、西雅图华盛顿大学、北京外经贸大学、乔治亚理工和腾讯优图的论文“Large Language Model Agent: A Survey on Methodology, Applications and Challenges”。 智体时代已经到来&a…...

【操作系统】Linux进程管理和调试

在 Linux 中&#xff0c;可以通过以下方法查看 PID&#xff08;进程ID&#xff09;对应的进程名称和详细信息&#xff1a; 1. 使用 ps 命令&#xff08;最直接&#xff09; ps -p <PID> -o pid,comm,cmd示例&#xff1a; ps -p 1234 -o pid,comm,cmd输出&#xff1a; P…...

C++---RAII模式

一、RAII模式概述 1. 定义 RAII&#xff08;Resource Acquisition Is Initialization&#xff09;即资源获取即初始化&#xff0c;是C中用于管理资源生命周期的一种重要编程模式。其核心在于将资源的获取和释放操作与对象的生命周期紧密绑定。当对象被创建时&#xff0c;资源…...

Clion刷题攻略-配置Cmake

使用Clion刷题&#xff0c;在一个项目中创建多个main函数&#xff0c;每一个文件对应一道题目&#xff0c;将Clion作为题目管理系统使用&#xff0c;并且cpp文件允许使用中文名&#xff0c;exe文件统一输出到runtime目录&#xff0c;防止污染根目录&#xff0c;CmakeLists文件如…...

DEBUG:file命令

file 命令详解 file 是 Linux/Unix 系统中用于检测文件类型的实用工具。它通过检查文件的**魔数&#xff08;magic number&#xff09;**和内容结构来判断文件类型&#xff0c;而不是依赖文件扩展名。 1. 基本语法 file [选项] 文件名... 常用选项 选项说明-b (--brief)简洁…...

hackmyvn-casino

arp-scan -l nmap -sS -v 192.168.255.205 目录扫描 dirsearch -u http://192.168.255.205/ -e * gobuster dir -u http://192.168.255.205 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x php -b 301,401,403,404 80端口 随便注册一个账号 玩游戏时的…...

Elasticsearch笔记

官网 https://www.elastic.co/docs 简介 Elasticsearch 是一个分布式、开源的搜索引擎&#xff0c;专门用于处理大规模的数据搜索和分析。它基于 Apache Lucene 构建&#xff0c;具有实时搜索、分布式计算和高可扩展性&#xff0c;广泛用于 全文检索、日志分析、监控数据分析…...

在Windows下使用Docker部署Nacos注册中心(基于MySQL容器)

需要两个容器Nacos容器和MySQL容器&#xff0c;MySQL容器专注数据存储&#xff0c;Nacos容器专注服务发现/配置管理 准备工作 确保已安装Docker Desktop for Windows确保已启用WSL 2(推荐)或Hyper-V确保Docker服务正在运行 部署步骤 1. 拉取所需镜像 # 拉取MySQL镜像(这里…...

去中心化自治组织(DAO):革新未来治理的下一站

去中心化自治组织(DAO):革新未来治理的下一站 引言 去中心化自治组织(DAO)的诞生,像是互联网时代的一道新曙光。它打破了传统组织的等级壁垒,以去中心化和智能合约为核心,让社区成员能够直接参与决策并共享收益。从NFT社区到投资基金,DAO的应用场景正以前所未有的速…...