映射类型:删除可选修饰符

2023-12-03

鉴于此代码:

interface Foo{
  one?: string;
  two?: string;
}

type Foo2 = {
  [P in keyof Foo]: number;
}

我期望的类型Foo2 to be { one: number; two: number; }然而,它似乎保留了可选修饰符{ one?: number; two?: number; }

使用映射类型时是否可以删除可选修饰符?


在 Typescript 2.8 中,您可以显式消除修饰符:

type Foo2 = {
  [P in keyof Foo]-?: number;
}

或者使用Required内置于较新版本中的类型。

如果您使用的是旧版本,可以使用此解决方法:

type Helper<T, TNames extends string> = { [P in TNames]: (T & { [name: string]: never })[P] };
type Foo3 = Helper<Foo, keyof Foo>;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

映射类型:删除可选修饰符 的相关文章

随机推荐

  • NetBeans 中的 GroupLayout 自动生成的代码

    在进行了近 4 年的 Java 编程之后 我决定学习如何自己编写 GUI 类 因为直到现在我一直使用 NetBeans GUI 编辑器 我并不为它感到特别自豪 但它运行得很好 避免了我担心组件 布局 问题是我正在关注如何使用GroupLay
  • 如何在 python (numpy) 中更快地计算每行两个矩阵 A 和 B 的外积?

    假设我们有两个矩阵 A 和 B A 具有形状 r k B 具有形状 r l 现在我想计算每行这两个矩阵的 np outer 乘积 在外积之后 我想对轴 0 中的所有值求和 所以我的结果矩阵应该具有形状 k l 例如 A的形式是 4 2 B的
  • 屏蔽字符串的一部分

    所以我的问题是 我有一项任务需要解决 我有一个简单的功能 def multiplicator x y var1 x y return var1 我需要使用这个乘法器在另一个函数中得到这个结果 Enter 5435843398429829 o
  • 为什么实体框架会生成缓慢的过度设计的 SQL?

    我有这个代码 DbSet
  • JavaScript 变量提升解释

    我发现了以下关于 javascript 中变量提升的文章 文章总结了以下三点 1 All declarations both functions and variables are hoisted to the top of the con
  • 在 mongodb 中读取数组?

    您好 我在 mongodb 中的数组方面遇到了一些问题 用java读取文档没有问题 但是读取文档中的数组是一个问题 假设我有一个集合 myCol name lenny linux gender m computers name comput
  • 将多个文件的列合并到一个文件中 - Python

    我有数百个文本文件 其中包含大量信息 每个文件有 3 列 前两列对于所有文件都相同 我需要将所有文件的第三列合并到一个新文件中 并插入一个列标题 其中包含该列所属的文件的名称 具有如下三列的 txt 文件 118 3333333333327
  • AVPlayer 停止在在线模式下播放 AES 加密的离线 HLS 视频

    我编写了一个代码来下载 HLS 视频并在离线模式下播放 此代码适用于编码视频 现在我有一个 AES 加密的视频 我们为其提供了自定义加密密钥 下载 AES 加密的 HLS 视频后 我使用下面给出的代码来提供用于解密视频的密钥 BOOL re
  • Android Studio 模拟器屏幕“拉伸”并扭曲

    所以这是问题 无论我选择哪种 Android 设备 我的模拟器总是看起来屏幕被划伤了 当我尝试运行我的应用程序时 屏幕变得如此扭曲和划伤 以至于无法识别 我已经尝试过 我认为的一切 包括 删除所有 android studio 文件并重新下
  • android COSU 单一应用程序 - 锁定浏览器并在小工具上仅使用一个网络应用程序

    我对 Android 没有经验 我想以这样一种方式设置一些平板电脑 即这些小工具仅锁定一个网络应用程序 我认为它应该以某种方式锁定到浏览器 反过来应该在平板电脑启动后直接打开 并将网络应用程序的登录页面设置为默认 并且浏览器应该锁定到特定的
  • 为未命名为“:id”的数据库设置主键

    我正在使用 rails 2 3 5 ruby 1 8 7 和 Windows 7 Home Basic 我得到了一个数据库 并将其连接到 Rails 读取和获取数据没有任何问题 现在我想做的是在其中添加一些功能 添加 编辑和删除 但是当我尝
  • 关闭一个 JFrame 而不关闭另一个?

    我想显示两个 或更多 JFrames同时 当我关闭其中一个框架 使用默认关闭按钮 时 其他框架应该仍然可见 我怎样才能做到这一点 如果你这样做not希望您的应用程序终止时JFrame已关闭 使用 setDefaultCloseOperati
  • 使用C++在Windows上获取ssl证书

    我正在尝试在 Windows 上获取远程服务器的 ssl 证书 我发现的一种选择是使用 openssl 执行此操作的命令如某些帖子所示internet is openssl exe s client showcerts connect RE
  • 如何修复Retrofit中的预期BEGIN_OBJECT?

    在我的应用程序中我想使用Retrofit用于从服务器获取一些数据 我写了下面的代码 但是当运行应用程序并调用 api 时 会在下面显示error E socketLogResponse Err com google gson JsonSyn
  • 在列表视图中播放 YouTube 视频列表

    我在显示和播放 YouTube 视频列表时遇到问题 让我解释一下 我有一个片段并放置在列表视图上 在该列表中 每个项目都有单独的子视图 我被安置
  • 从 data.frame 中提取行标签(?)

    从数据框开始 df data frame k c 1 5 4 7 6 v c 3 1 4 1 5 gt df k v 1 1 3 2 5 1 3 4 4 4 7 1 5 6 5 我可能会运行一些任意操作 gt foo1 df df k gt
  • RSA 公钥生成——Swift

    Azure 密钥保管库发送e and n等于 RSA 模数的参数 n 和 RSA 公共指数 e 使用第三方库很容易创建 但如果没有模数和指数 输出值将无效 我需要创建这两部分的 RSA 公钥 然后我必须创建 RSA OAEP 有人遇到过类似
  • 将参数数组传递给 powershell.exe

    我有一个脚本需要 2 个数组作为输入 以及可选的 logname file test ps1 Param string array1 string array2 string logName log 0 csv f get date for
  • 将两个字典转储到 json 文件中的不同行上

    这是我的代码 import json data1 example1 1 example2 2 data2 example21 21 example22 22 with open saveData json w as outfile json
  • 映射类型:删除可选修饰符

    鉴于此代码 interface Foo one string two string type Foo2 P in keyof Foo number 我期望的类型Foo2 to be one number two number 然而 它似乎保