打字稿“不是索引器的子类型”,是什么意思?

2024-01-08

我正在通过阅读来学习 Typescript这份官方文件 https://www.typescriptlang.org/docs/handbook/interfaces.html关于索引器类型。

我无法理解这段代码:

interface NumberDictionary {
    [index: string]: number;
    length: number;    // ok, length is a number
    name: string;      // error, the type of 'name' is not a subtype of the indexer
}

First,为什么要把“长度”放在索引类型中???

let myDict : NumberDictionary;
myDict[10] = 23;

NumberDictionary 是一种索引类型。为什么 NumberDictionary 定义中有长度?索引类型应该是a[10],为什么有长度? javascript中的数组对象有长度,但索引类型是数组吗?如果是这样,为什么上面的例子定义了长度?有必要吗? 抱歉我的咆哮。你可以看到我很困惑。

Second,

name: string;// error, the type of 'name' is not a subtype of the indexer

我不明白这一行的评论。为什么名称必须是索引器的子类型?索引器就像a[10] = "Tom",那么索引器的子类型是什么?


我不明白这一行的评论。为什么名称必须是索引器的子类型?

因为对于任何string访问 TypeScript 将假定类型number(基于[index: string]: number;)。因此,如果name: string;被允许以下假设number但实际上你可能会认为string:

let x: NamedDictionary = Object.create(null);
let n = "name";
let y = x[n]; // TypeScript assumes `number`
let z = x["name"]; // Would you want `string`?

查看之间的不一致y and z ^

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

打字稿“不是索引器的子类型”,是什么意思? 的相关文章

  • Ionic 3 - IE11 中 ES6 的 Polyfill 不工作

    我知道 Ionic 已经声明他们不会支持 IE11 但是我目前仍然有义务尝试并在可能的情况下想出某种解决方法 我遇到的问题是 Ionic 在开发环境中构建的 main js 文件由于使用模板文字而在 IE11 中抛出错误 我创建了一个 po
  • 带有用 Typescript 编写的参数的 vuex getter

    我们可以创建一个 vuex store getter 它接受一个参数参数 如下所示 https vuex vuejs org en getters html https vuex vuejs org en getters html 我正在使
  • 联合类型上不存在 Typescript 属性

    这是我遇到过几次的情况 看起来应该相当简单 但我找不到不将类型设置为任何的解决方案 函数采用两个不同对象之一作为参数 检查已接收到哪个对象 并返回相应的字段 这是问题的简化版本 但问题是这两个对象只能通过它们的属性 没有重叠 来区分 并且我
  • 如何重命名对象中的字段

    我正在使用 Angular 5 我有 假后端 项目数组 我的情况 我正在等待以下对象结构 id number title string 但是 后端向我发送了错误的结构 id number name string 我需要从后端接收数据 如果字
  • Angular 2 bootstrap 函数给出错误“参数类型 AppComponent 无法分配给参数类型 Type”

    这是我的第一个简单的Hello World角度 2 应用程序来自Angular 2 快速入门指南 https angular io docs ts latest quickstart html import Component from a
  • Angular 10 在从不同工作区渲染组件时使用库时无法读取 null 属性“bindingStartIndex”

    我创建了一个位于我的应用程序工作区之外的 Angular Library 结果是我有两个不同的工作空间 我的第一个方法是建立我的图书馆和链接 dist与我的应用程序的文件夹 这对于 ngserve 来说效果不太好 但无论如何我在渲染我的库组
  • 从 API 响应动态创建 md-card

    我正在进行 API 调用并存储一堆用户配置文件 并且我希望能够为每个配置文件动态创建卡片 Angular Material Design md card 返回的配置文件数量可能会有所不同 因此这需要是动态的 这是我的组件文件 它发出 JSO
  • 解析错误:关键字“enum”被保留

    我正在用 React 编写 TypeScript 该项目是用 CRA 生成的 我用过react app配置为 eslintrc json 不过我决定使用eslint config airbnb所以我添加了它并改变了我的 eslintrc j
  • 如何在 TypeScript 中创建动态对象

    有没有办法在 TypeScript 中定义动态对象类型 在下面的示例中 我想通过以下方式定义 我的复杂类型 的类型 我的复杂类型 类型的对象是具有 任意数量的属性 的对象 但这些属性的值必须是 IValue 类型 value interfa
  • Ionic CSS 类分配

    我正在设计我的应用程序 熟悉基本的主题组件 SASS 等 但有一件突出且没有意义的事情是为什么当我在正在运行的应用程序中预览源代码时会添加大量额外的 CSS 类 就我而言 我只是想更改菜单标题背景 在我的 app html 文件中 我有
  • 如何从类型中省略属性?

    我对 Typescript 中的 Omit 类型有疑问 所以我知道 Omit 类型与Pick并且是这样构建的 type Omit
  • 两个项目之间的跨项目引用

    是否可以在两个 TypeScript 项目之间进行引用 假设我们有以下项目结构 Module1 ts包含 module TestModule export interface Interface1 Module2 ts包含 module T
  • 将嵌入的内容传递给嵌套列表的孙组件

    我知道有几个问题与此类似 但它们并不完全相同 我正在构建一个嵌套列表 我想在每个孙子中与常见 html 一起显示自定义 html 内容 当我在循环外部添加到 ListComponent 时 可以正常工作 但是如果我将其在循环内部传递给内部子
  • Angular - 当服务价值发生变化时更新组件价值

    我有多个组件 在 NgFor 循环中 调用相同的服务 我想要的是 当一个组件更改同一服务中的值时 该新值会被发送到调用该服务的每个组件 并随后更新组件变量中的该值 我希望这是有道理的 如果您需要更多信息 请告诉我 代替BehaviorSub
  • 通用枚举类型防护

    我可以编写一个非泛型类型保护来检查给定字符串是否是字符串枚举的成员 如下所示 enum MyEnum Thing1 thing one Thing2 thing two const isMyEnum token any token is M
  • 获取打字稿中的函数名称

    我正在寻找一种方法来获取传入参数的函数名称 console clear class A test testCall fnc Function console log fnc name i want it display test here
  • 尝试使用作为 ObjectType key 的变量设置对象属性时,类型“any”不可分配给类型“never”

    在下面的代码中 typscript 编译器在更新方法中显示错误 指出 any 不能分配给类型 never 我注意到当类型包含与其他类型混合的布尔值时 keyof 类型不起作用 如何使其编译时在类型中具有混合类型值 type ConfigSt
  • 打字稿错误:setInterval - 类型“Timer”无法分配给类型“number”

    我有以下代码 let onSizeChangeSetInterval setInterval gt 30 当我编译此代码时 出现以下错误 src components popover popover component ts 98 17 中
  • 如何将 JSON 对象解析为 TypeScript 对象

    我目前正在尝试将收到的 JSON 对象转换为具有相同属性的 TypeScript 类 但无法使其工作 我究竟做错了什么 员工阶层 export class Employee firstname string lastname string
  • 如何使用 Angular 2 实现拖放(v2.0.0-beta.15)

    我想以角度实现一个简单的拖放列表 例如我可以更改其顺序的杂货列表 iv 在使用之前实现它https github com akserg ng2 dnd https github com akserg ng2 dnd但我的问题是我使用角度2

随机推荐

  • 正则表达式仅使用egrep捕获整个单词

    我正在使用egrep 来查看perforce NAS 中的脚本 我试图找到我们使用 RCP 和 RSH 的地方 我遇到的问题是 1 我在 REGEX 上很糟糕 2 我正在捡起我不感兴趣的垃圾 例如 如果一个文件包含单词 strcpy 它会捡
  • 错误1001。初始化安装时发生异常

    我在尝试卸载时看到以下错误 程序文件中没有WRT文件夹 如何卸载该软件 注意 我已从程序文件中删除了软件文件夹 错误信息 System IO FileNotFoundException could not load file or asse
  • 如何检查 Java 8 Streams 中是否存在重复项?

    在 java 8 中 检查列表是否包含重复项的最佳方法是什么 我的想法是这样的 list size list stream distinct count 这是最好的方法吗 您的代码需要迭代所有元素 如果你想确保没有重复的简单方法 例如 pu
  • 如何为 HTML div 标签设置边框

    我正在尝试在 HTML 中定义 div 标签周围的边框 在某些浏览器中 边框不会出现 这是我的 HTML 代码 div style border thin div
  • 计算嵌套对象中的键数

    我正在尝试统计嵌套 JS 对象中的键 我能够到达第一层 但我有点困惑如何让它深入嵌套对象并返回计数 var properties prop1 prop2 prop3 prop4 subProp1 subProp2 subProp3 subS
  • 设置 eclipse java SE-1.7

    我想开始学习java 但是Eclipse给我带来了一些麻烦 首先 我是一个Java初学者 对它知之甚少甚至一无所知 我想使用 JavaSe 1 7 除了使用最新版本之外 我没有明确的理由使用它 下载 Eclipse 适用于 Java 开发人
  • 为什么非成员 static constexpr 变量不是隐式内联的?

    在 C 17 中 我们得到了内联变量 并且我假设全局 constexpr 变量是隐式内联的 但显然这只适用于静态member变量 这背后的逻辑 技术限制是什么 source 声明为 constexpr 的静态成员变量 但不是名称空间范围变量
  • 当底层模型更改时,QT QmlMap PolyLine 未正确更新

    我正在尝试将多个地理坐标与地图中的折线连接起来 坐标存储在模型 QAbstractListModel 类中 我可以在其中修改 删除和添加 C 中的坐标 简单地显示每个坐标的标记就可以了 但是当我将它们与折线连接并从模型中删除一些现有坐标时
  • 将 Base64 字符串加载到画布时遇到问题

    我正在尝试将 Base64 字符串从数据库加载到画布 我通过执行相反的方法获得了这个字符串 在画布上绘制后将其保存到我的数据库中 所以 现在我想将其加载回另一个画布上 我已经尝试过在网络和 StackOverflow 上其他地方找到的这段代
  • 尝试使用 getRange 时出现类型错误

    NOTE This is a proposal of canonical Q A Please discuss it on Meta https meta stackoverflow com q 420764 1595451 作为新的 Go
  • 使用数据框架构的 Spark 地图数据框

    我有一个从 JSON 对象创建的数据框 我可以查询这个数据框并将其写入镶木地板 由于我推断了架构 因此我不一定知道数据框中的内容 有没有办法使用自己的架构来输出列名称或映射数据框 The results of SQL queries are
  • 如何检测浏览器何时在 Web 登录中输入存储的密码

    我有一个网站 可以检测何时输入用户名和密码 然后启用登录按钮 问题是 如果浏览器输入它记住的用户名和密码 则登录按钮永远不会启用 JavaScript 有没有办法检测浏览器输入此信息 你可以用以下方式进行轮询setInterval 但是为什
  • 如何将 Invoke-RestMethod 的响应转换为 XML?

    参考help https learn microsoft com en us powershell module microsoft powershell utility invoke restmethod view powershell
  • 将 URL 参数传递到 HTML 表单 Google Web App

    我已经浏览了大部分与此相关的问题 但没有找到对我有帮助的解决方案 我已经一一应用了它们 我有一个 HTML 表单 我正在通过 google 将其发布为网络应用程序 我需要用该参数预先填充输入框 code gs function doGet
  • 为什么 March=native 会破坏我的程序?

    我正在编译程序 include
  • 如何让liveserver渲染django模板?

    我一直在搞一个教程网站 我发现当我尝试打开 Django 模板时 我的 VS Code LiveServer 插件无法正常工作 我应用的 CSS 丢失了 尽管一切都在我的本地开发服务器中正确呈现 并且模板语言代码实际上被打印到屏幕上而不是被
  • 如何创建/管理作业队列[重复]

    这个问题在这里已经有答案了 我有一个有序列表中包含数千个 shell 作业的队列 我需要从上到下并行运行 4 个作业以避免 CPU 饱和 如果我只是将作业列表拆分为 4 个批处理脚本 则运行时不会对齐 其中一个脚本将远远领先于其他脚本 但仍
  • STOMP 或 XMPP - 通过 websocket

    我正在开发一个涉及实时聊天 消息传递 包括群聊 的项目 我以前使用过 websockets 所以我开始使用 spring websockets 来研究这个问题 并且我阅读了一些关于实现它的最佳方法的文章 然后我遇到了 STOMP 作为 we
  • 使用 Capistrano,如何回滚到特定版本?

    使用 Capistrano 如何回滚到特定版本 我的服务器文件夹中有一个 release 文件夹 我如何回滚到特定的文件夹 我是否可以在本地计算机上获取版本列表 我正在使用 GIT 但这不起作用 cap deploy s revision
  • 打字稿“不是索引器的子类型”,是什么意思?

    我正在通过阅读来学习 Typescript这份官方文件 https www typescriptlang org docs handbook interfaces html关于索引器类型 我无法理解这段代码 interface Number