在 Typescript 中声明并初始化字典

2024-04-19

给出以下代码

interface IPerson {
   firstName: string;
   lastName: string;
}

var persons: { [id: string]: IPerson; } = {
   "p1": { firstName: "F1", lastName: "L1" },
   "p2": { firstName: "F2" }
};

为什么初始化没有被拒绝?毕竟,第二个对象没有“lastName”属性。


Edit:此问题已在最新 TS 版本中得到修复。引用 @Simon_Weaver 对 OP 帖子的评论:

注意:此问题现已修复(不确定具体的 TS 版本)。我 正如你所期望的,在 VS 中得到这些错误:Index signatures are incompatible. Type '{ firstName: string; }' is not assignable to type 'IPerson'. Property 'lastName' is missing in type '{ firstName: string; }'.


Apparently this doesn't work when passing the initial data at declaration. I guess this is a bug in TypeScript, so you should raise one at the project site.

您可以通过在声明和初始化中拆分示例来使用类型化字典,例如:

var persons: { [id: string] : IPerson; } = {};
persons["p1"] = { firstName: "F1", lastName: "L1" };
persons["p2"] = { firstName: "F2" }; // will result in an error
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Typescript 中声明并初始化字典 的相关文章

随机推荐

  • onKeyDown 事件不适用于 React 中的 div

    我想在 React 中的 div 上使用 keyDown 事件 我愿意 componentWillMount document addEventListener keydown this onKeyPressed bind this com
  • 如何解决Mac上flutter中“运行pod install时出错”的问题?

    当我尝试在 iPhone 上启动我的项目时出现错误 基本的 Flutter 示例在我的 iPhone 上运行 但当我使用我的项目时出现此错误 在Flutter项目中 我也遇到了这个问题 通过将 flutter 和 cocoa pod 更新到
  • R - 安装插入符号包时出错

    gt Error in loadNamespace j lt i 1L c lib loc libPaths gt versionCheck vI j namespace pbkrtest 0 4 2 is being gt loaded
  • 使用 .Net 的 Oracle 高级队列

    有人知道如何使用 PL SSQL 和 ODP NET 从 C 实现 Oracle Advance Queue 我找不到包含 C 或 VB NET 中具体示例的单个示例或资源 理想情况下 我想要一些关于如何使用简单类型 XMl 字符串 将消息
  • php DatePeriod 未按预期返回 2 天

    我尝试获取一段时间内的所有日期 无论是一整天还是几个小时都没关系 我当前使用 DatePeriod 的代码对我不起作用 Example start gt DateTime Object date gt 2014 01 27 22 40 40
  • 为什么 std::sort 抱怨已删除的复制者?

    假设我们有一个简单的类 其中包含std string class StringWrapper public const std string s StringWrapper const std string s s s We want th
  • 如何处理返回带有“有效负载”的 JavaScript 的 JavaScript fetch() ?

    我正在尝试使用 JavaScript 的现有后端代码 fetch someURL then res gt res json then data gt console log data 但是 我注意到响应标头说 content type ap
  • R 中 dygraphs 包(使用 JavaScript)中 dygraph 中的日期错误

    我使用一个绘制了一个dygraphdygraph函数从一个dygraphs http rstudio github io dygraphs 包裹 我的数据是从日期 2014 12 10 到 2014 12 17 gt str seriesX
  • 以编程方式获取应用程序池标识

    如何在 C 中以编程方式获取 appPool 的标识 我想要应用程序池用户而不是当前登录的用户 你可以使用System Security Principal WindowsIdentity GetCurrent Name识别当前应用程序正在
  • 需要正则表达式来匹配特殊情况

    我正在拼命寻找与这些场景匹配的正则表达式 1 匹配交替字符 我有一个像 这是我的 foobababababaf 字符串 这样的字符串 我想匹配 babababa 我唯一知道的是要搜索的片段的长度 我不知道可能是什么字符 数字 但它们是交替的
  • 间歇性 MongoDB 连接问题:尝试以访问权限禁止的方式访问套接字

    当尝试将文档写入我的集合时 我偶尔会抛出以下异常 我正在使用 mLabs 托管的 MongoDB 3 0 7 我们的应用程序托管在 Azure 中 作为 Web 应用程序 我使用的是 C 2 2 3 SDK MongoDB Driver M
  • C++:“我的文本”是 std::string、*char 还是 c 字符串?

    我刚刚做了看似的事情新手常见的错误 https stackoverflow com questions 721129 spot the error in this file reading code c 首先我们读到许多教程之一 http
  • Heroku CLI 突然损坏

    突然 从一个命令到下一个命令 Heroic CLI 停止工作 无论我在命令行中输入什么内容 我都会收到相同的错误 见下文 heroku help commands is not a heroku command Perhaps you me
  • boto3 S3 对象解析

    我正在尝试编写一个 Python 脚本来处理存储在 S3 上的音频数据 我有一个 S3 对象 我正在使用它调用 def grabAudio filename directory obj s3client get object Bucket
  • 什么是 java.lang.Class[]

    What is java lang Class Thanks Puneet 参数化类型的类型参数不限于具体的 类或接口 Java 允许使用类型通配符作为 参数化类型的类型参数 通配符是类型参数 以 的形式 可能有上限或下限 鉴于 通配符表示
  • Rscript执行错误:没有那个文件或目录

    Rscript 的二进制文件可用 但当我尝试使用它时 我得到 Rscript helloworld r Rscript execution error No such file or directory 如果我只做 Rscript 它会带来
  • 使用 openCV 查找图像轮廓

    因为我想跟踪物体的运动 所以我需要图像序列的轮廓 有人知道怎么做这个吗 轮廓蒙版是一个二值图像 在运动发生处具有非零像素 您可以使用以下技术背景扣除 这里有两种方法 从当前帧中减去前一帧 只有两个帧中未发生变化的像素才会导致零 看cvSub
  • 使用 Gmail 的 PHP 邮件

    在我的 PHP Web 应用程序中 我希望在发生某些错误时通过电子邮件收到通知 我想使用我的 Gmail 帐户发送这些内容 这怎么可能做到呢 Gmail 的 SMTP 服务器需要非常具体的配置 From Gmail 帮助 http mail
  • 如何将文件从 Ansible Tower 上传到 Artifactory?

    我每次都会收到此错误 但仅在尝试从 Ansible Tower 上传到 Artifactory 时出现在特定文件上 这些文件都是在清单主机上创建的Oracle Collection Tool 然后在上传到 Artifactory 之前获取到
  • 在 Typescript 中声明并初始化字典

    给出以下代码 interface IPerson firstName string lastName string var persons id string IPerson p1 firstName F1 lastName L1 p2 f