如何在 TypeScript 中将一种泛型类型的结构复制到另一种泛型?

2023-11-29

假设我们有以下输入类型:

interface Input {
    name: string;
    heightCm: number;
    dob: Date;
}

我想编写一个函数,可以根据此输入生成以下输出类型:

interface Output {
    name: boolean;
    heightCm: boolean;
    dob: boolean;
}

换句话说,一个函数复制结构输入的结构并将其作为输出返回,并将所有值设置为布尔值。

函数签名看起来像这样:

interface GenericMap<T> {
    [key: string]: T;
}

type InputToOutput<In, Out extends GenericMap<boolean>> = (input: In) => Out;

如果类型为Input属性最初是一个字符串,将该属性标记为true,否则标记为false.

例如。该函数将根据以下结果产生以下结果Input above:

{
    name: true,
    heightCm: false,
    dob: false
}

但最重要的是,它需要是类型安全的,以便我可以在结果对象上接收智能感知。

帮助非常感谢!


我认为您只是想要一个将每个属性的类型设置为布尔值的映射类型?

type GenericMap<T> = {
    [K in keyof T]: boolean
}

你会这样使用:

interface Input {
    name: string;
    heightCm: number;
    dob: Date;
}

type Output = GenericMap<Input>
// Output is
// {
//    name: boolean;
//    heightCm: boolean;
//    dob: boolean;
// }

操场


作为(潜在的)改进,您甚至可以检查string在此类型别名中并返回true or false, 而不是boolean.

type GenericMap<T> = {
    [K in keyof T]: T[K] extends string ? true : false
}

这会产生这种类型:

type Output = GenericMap<Input>
// {
//    name: true;
//    heightCm: false;
//    dob: false;
// }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 TypeScript 中将一种泛型类型的结构复制到另一种泛型? 的相关文章

  • Chart.js 在初始化时设置活动段

    我正在使用 Chart js v2 并且尝试在加载图表时模拟圆环图上某个段的 悬停状态 因此看起来有一个部分已突出显示 我已经搜索和梳理了代码一天 但找不到一个好的方法来做到这一点 提前致谢 设置片段的悬停样式有点令人困惑 因为它没有真正记
  • 以编程方式填写reactjs表单

    我正在编写一个用户脚本 但无法填写由reactjs制作的表单 我的代码 document querySelector id username value email protected cdn cgi l email protection
  • Chrome 中的性能问题

    我目前正在从事一个相对较大的项目 使用 AngularJs 构建 应用程序的一部分是一个表单 您可以向其中添加任意数量的页面 不幸的是 添加了很多不必要的垃圾 即表示表单模型的对象可能会变得非常大 在某些时候 Chrome 基本上无法处理它
  • 如何将内联 JavaScript 与 Express/Node.js 中动态生成的内容分开?

    对于具有几年 Web 开发经验但没有找到答案的人来说 这是一个有点菜鸟的问题程序员堆栈交换 or Google 我决定在这里问一下 我在用Express网络框架Node js 但这个问题并不特定于任何 Web 框架或编程语言 以下是从数据库
  • Angular 2 和 TypeScript 的承诺

    我正在尝试使用routerCanDeactivate我的应用程序中的组件的函数 简单的使用方法如下 routerCanDeactivate return confirm Are you sure you want to leave this
  • 图像无法在带有 DOM 的 IE 中加载:控制台中的 7009 错误(无法解码)

    当在 IE 中的单个页面上加载许多图像时 在 IE11 中重现 其中一些图像开始加载失败 并在控制台中出现类似以下警告的内容 DOM7009 无法解码 URL 处的图像 某些唯一的 url 当我查看网络流量时 似乎确实从服务器收到了每个图像
  • Angular - CSS - 自定义类型=文件输入,如何使用按钮而不是标签?

    我制作了一个类型为 file 的自定义输入字段 因为我不喜欢默认的输入字段 为了实现这一目标 我做了
  • 将 GMT 时间转换为当地时间

    我以这种格式从我的服务器获取 GMT 时间 Fri 18 Oct 2013 11 38 23 GMT 我的要求是使用Javascript将此时间转换为本地时间 例如 如果用户来自印度 首先我需要采用时区 5 30并将其添加到我的服务器时间并
  • 设置 cookie 时中断 JavaScript 执行

    当设置 cookie 时 是否可以始终中断浏览器开发人员工具中的 javascript 执行 无需显式设置 JS 断点 document cookie 在 html head 块的开头添加此代码片段效果很好
  • Chrome 扩展程序在代码中使用 client_secret

    我正在开发具有自己的 oAuth 授权的 Google Chrome 扩展 当然 我必须使用 client id 和 client secret 作为请求令牌 有什么办法可以向用户隐藏这些数据吗 由于此请求只是 javascript 源代码
  • 使用 CSS 或 Javascript 填充动画

    我只是想知道是否可以使用 CSS 或 javascript 创建填充动画 基本上我想创建一个填充动画 如下图所示 http i40 tinypic com eit6ia png http i40 tinypic com eit6ia png
  • 刷新页面时保存用户的选择

    我目前有一个页面显示不同团队的数据 我有一些数据 用户可以单击使其处于 打开 或 关闭 状态 并为每个数据显示不同的图标 它基本上就像一个清单 只是没有物理复选框 我想记住哪些 复选框 已被选中 即使在用户刷新页面或关闭浏览器并稍后返回之后
  • 为什么我们在打字稿中使用 HTMLInputElement ?

    我们为什么使用 document getElementById ipv as HTMLInputElement value 代替 document getElementById ipv value 功能getElementById返回具有类
  • Vuejs 2:去抖动不适用于手表选项

    当我在 VueJs 中反跳此函数时 如果我提供毫秒数作为原语 它就可以正常工作 但是 如果我将其提供为对 prop 的引用 它会忽略它 这是道具的缩写版本 props debounce type Number default 500 这是不
  • 从数据库检查数据的异步解决方案各种循环子句

    我想要做的是异步检查数据库并从中获取结果 在我的应用程序中我试图实现Asynchronously将此步骤解决为 从数据库中检查手机号码JsonArray循环子句的种类 Create JsonArray从结果 打印创建的数组 我学到了足够多的
  • Three.js 各种大小的粒子

    我是 Three js 的新手 正在尝试找出添加 1000 个粒子的最佳方法 每个粒子都有不同的大小和颜色 每个粒子的纹理是通过绘制画布创建的 通过使用粒子系统 所有粒子都具有相同的颜色和大小 为每个粒子创建一个粒子系统是非常低效的 有没有
  • 在 Javascript 中连接空数组

    我正在浏览一些代码 我想知道这有什么用处 grid push concat row 根据我的理解 它等同于 grid push row 为什么要大惊小怪 连接 你想使用 concat当您需要展平数组并且没有由其他数组组成的数组时 例如 va
  • Javascript - 水波纹效果

    我需要 JS 上的脚本 它将以 水波纹 样式更改 images html 抱歉 6MB GIF 文件 http fcuunited ru temp listening2 gif http fcunited ru temp listening
  • Jquery - 选择选项后如何获取选项的特定数据类型?

    我将直接跳到标记 然后解释我想要做什么 HTML 选择选项
  • Vue.js[vuex] 如何从突变中调度?

    我有一个要应用于 json 对象的过滤器列表 我的突变看起来像这样 const mutations setStars state payload state stars payload this dispatch filter setRev

随机推荐

  • 如何在 Julia 中使用 JuMP 提取优化问题矩阵 A,b,c

    我使用符号变量和约束在 Julia JuMP 中创建了一个优化模型 例如以下 using JuMP using CPLEX model Mod Model CPLEX Optimizer sets I 1 2 Variables x var
  • Perl 中的读写锁

    我正在寻找一种在 Perl 中实现读 写锁的好方法 这是同步 Windows 和 Unix 上不同 Perl 线程和 或进程的文件访问所必需的 尝试过 Fcntl flock 如果它按预期工作 这对我来说将是完美的 不幸的是 看起来在压力下
  • 是否可以使用 appengine 模块和云端点?

    使用 appengine 模块意味着创建动态 Web 应用程序 而不是通常的 appengine Web 应用程序项目 云端点与常见的 appengine Web 应用程序项目配合良好 但这些项目不支持 appengine 模块 问题是 如
  • 从 XML 生成 SQL 架构

    我们正在使用 Oracle 11 数据库和 java 开发环境 使用 Eclipse 并且希望将多个 xml 模式迁移到 SQL 模式 看过 ax xsd 但确实需要一些我们可以从 ant 运行的东西 未安装 SQL Server 的 Ec
  • Web Api 2 - 自定义数据类型JSON序列化

    我实际上是 Web Api 的新手 所以我的问题可能听起来有点奇怪 我有简单的 API 来返回有关价格变化的历史信息 我的控制器的操作如下所示 HttpGet Route api history id size public async T
  • 检索 SharePoint 列表数据并将其绑定到下拉列表

    我对 SharePoint 相当陌生 因此提前为听起来像 新手 而道歉 我创建了一个简单的 Web 部件 它使用 Web 用户控件 ascxfile 提供 Web 部件的所有控件 在 ascx 文件上 有一个 DropDownList 目前
  • SDN 4 - InProcessServer 在快照构建中损坏

    从大约一周前开始 运行测试进程内服务器 on 4 0 0 构建快照导致以下异常 Caused by java lang NoClassDefFoundError org neo4j ogm testutil TestServer at or
  • INSERT INTO 语句中的语法错误

    当我连接 Access 数据库时遇到问题 然后我在 INSERT INTO 语句中收到错误语法错误 我的代码是 string str Provider Microsoft ACE OLEDB 12 0 Data Source C Users
  • pandas 和 Stata 13 个文件

    我安装了 pandas 0 13 1 但是pandas read stata 无法阅读 dta以 Stata 13 格式创建的文件 出现错误 TypeError cannot concatenate str and NoneType obj
  • 如何将 stdin 上的输入发送到 Makefile 中定义的 python 脚本?

    鉴于这个问题的答案 在 Makefile 中嵌入 Python 以设置 make 变量这有效 define NEWLINE endef define PYTHON SCRIPT CODE import sys print hi endef
  • 通过分号分隔从单个查询中删除多个表

    我正在尝试从 sqlite 的单个操作中删除多个表 我尝试用分号分隔它 但它没有按预期工作 这是我当前的代码 NSString query DELETE from Friends DELETE from Stream DELETE from
  • PHP 获取活动会话

    我试图回显过去 15 分钟内处于活动状态的每个活动会话 我使用以下代码进行检查以记录其上次查看时间 SESSION last seen date Y m d H i s 但是在执行以下代码 即本文上方的代码 时 我收到这些错误 注意 未定义
  • R CMD 安装错误:test_load_package() 函数中出现意外符号

    Issue 我只是想从源代码构建一些包 但遇到了错误 错误 tools test load package rbenchmark per homedrive1 corp something org homedrive Tommy O Del
  • 选择范围中的单元格,直到行为空

    我有一个电子表格 始终从 A 列到 I 列 但行数的范围可能会有所不同 我想选择范围 A1 I20000 中的所有单元格 直到 A 列中的第一个空白单元格 因此如果数据以 202 结尾 它将停止选择第 202 行处的行 我尝试编写自己的公式
  • 更改 Div 样式 onclick

    我在页面顶部有 2 个选项卡 单击一个选项卡时 我希望该选项卡具有 活动 类 而另一个选项卡具有 非活动 类 以便用户可以看到当前选择的选项卡 我怎样才能用 javascript css 来做到这一点 div class tabActive
  • 如何在word中创建报告生成器

    我目前正在尝试制作它 以便我可以加载Word模板并提示填写数据 然后将这些数据填充到Word文档中 该报告有两个主要部分 概览中的第一个 系统将自动计算摘要 第二部分是摘要 其中将附加数据 在 Word 中生成报告的方法有多种 每种方法都有
  • WebBrowser 控件 - 控制台应用程序 - 事件未触发

    我一直在浏览各种WebBrowser控制stackoverflow问题 而且我似乎无法找到我遇到的问题的答案 我正在尝试使用用于打印网页的 WebBrowser 控件 下列的MSDN 的例子 我创建了以下控制台应用程序 namespace
  • 来自 Google 电子表格的电子邮件中的图表图像与 google-apps-script 返回白色图像

    我每天晚上都会向我自己的 Gmail 地址发送一份报告 大约一周后 图表的图像突然变成了空白 只有一张图表 function sendReport var ss SpreadsheetApp getActiveSpreadsheet var
  • 当参数是函数参数包时,在部分排序期间推导模板实参

    N4527 14 8 2 4 温度扣除部分 3 用于确定排序的类型取决于完成部分排序的上下文 3 1 在函数调用的上下文中 使用的类型是函数调用具有参数的函数参数类型 3 2 在调用转换函数的上下文中 使用转换函数模板的返回类型 3 3 在
  • 如何在 TypeScript 中将一种泛型类型的结构复制到另一种泛型?

    假设我们有以下输入类型 interface Input name string heightCm number dob Date 我想编写一个函数 可以根据此输入生成以下输出类型 interface Output name boolean