可索引类型 - TypeScript

2024-01-10

下面的语法,

interface StringArray {
    [index: number]: string;
}

指出当StringArray索引为number,它将返回一个string。例如 -

let myArray: StringArray;
myArray = ["Bob", "Fred"];
let myStr: string = myArray[0];

So, myArray存储的值的类型受到限制string类型,通过用 type 声明它StringArray。键(索引)始终是string类型,在引擎盖下(JavaScript),尽管提到它作为number


从下面的语法来看,

class Animal{
  name: string;
}

class Dog extends Animal{
  breed: string;
}

interface NotOkay {
  [x: number]: Animal;
  [x: string]: Dog;   
}
  1. 什么是NotOkay语法状态?

从下面的语法来看,

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
}
  1. 什么是NumberDictionary state?

  1. 为什么这两个语法是错误的?error TS2413 & error: TS2411

(正如 @betadeveloper 指出的,这些示例取自打字稿文档:https://www.typescriptlang.org/docs/handbook/interfaces.html https://www.typescriptlang.org/docs/handbook/interfaces.html)

1+3) 文档的要点是此声明不一致。

该声明似乎表明此代码有效:

let no: NotOkay

function byString(key: string): Dog {
   return no[key]
}

function byNumber(key: number): Animal {
   return no[key]
}

但问题是,例如查找no[0]确实是一样的东西no['0'](这就是 JavaScript 的工作原理)。所以byString('0') will actually只是结果是动物,不一定是狗。

因此,为了防止上面的代码——看起来正确但实际上对于某些字符串键(那些碰巧是字符串形式的数字的键)来说是错误的——TypeScript 不允许声明。

2+3) [index: string]: number;表示您可以使用任何字符串作为 a 的索引NumberDictionary你会得到一个号码。

另一方面,name: string;说该物业name是一个字符串。但属性也可以作为索引来访问,例如当做

let nd: NumberDictionary

let a = nd['name']
let b = nd.name

a 和 b 的意思是完全相同的事情,但第一个声明似乎说a是一个数字,而第二个声明似乎说b是一个字符串。这是矛盾的,因此这个声明也是不允许的。

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

可索引类型 - TypeScript 的相关文章

  • Node + now.js + 模型-视图-控制-模式

    我正在使用基于 MVC 模式 模板和 PHP 类 的论坛软件 页面如下所示 domain com index php page Test 我想使用 Node 和 now js 在一个页面 domain com index php page
  • 非常基本的 JS 编码,是否有 SoundManager2?

    我想在我的网站上包含一个具有以下属性的音频 可能的视频播放器 必须可通过 div 通过 CSS 设计样式 可以读取所有ID3信息 可以从数据库中提取文件 可能是 GoDaddy 的 Easy Database 无闪光 可转移至智能手机等 我
  • 使用浏览器内的 JS 数值求解三角方程[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 给定变量值s v and h 并给定一个库 例如数字 js http www numericjs com index php我怎样才能用数
  • 如何使用jquery格式化数字

    我正在尝试删除 之后的数字 然后我想格式化数字 16810900 211233 喜欢这个 16 810 900 但我不知道该怎么做 这是我的 html 是这样的 div class main p class active 10200 00
  • 重新排序 Magento JavaScript 包含 (addJs)

    我会保持简单 在我的产品页面上 我需要删除prototype js 文件并将其替换为最新版本的prototype 到目前为止 我已经使用 local xml 成功替换了它
  • 如果Functions是javascript中的对象,为什么function.constructor指向Function而不是Object?

    当像这样从窗口对象创建以下函数时 function userInfo 既然函数是对象 为什么 userInfo constructor 显示 Function 而不是 Object 当使用以下内容时 它甚至显示函数而不是对象 Functio
  • 将图像缩略图上传到服务器,而不上传整个图像

    据我所知 我在这里问的是不可能的 但我想无论如何我都会问 以防我遗漏了什么 假设您想让用户上传 JPG 图像 并且这些图像被缩放为较小的图标 并且原始图像始终被丢弃并且不再需要 有没有什么方法可以在大多数现代浏览器中普遍使用 让用户选择硬盘
  • 流媒体性能 - Canvas 与

    我正在开发一个应用程序 需要通过 webSocket 连接以每秒至少 30 帧的速度持续传输图像 我遇到了一些性能问题 并希望尽我所能进行优化 我想知道使用不断更新的图像之间的性能差异是什么 就像这样 img src someDynamic
  • 如何使用 Underscore 获取 JavaScript 数组中的重复项

    我有一个数组 我需要重复的项目并根据特定属性打印这些项目 我知道如何使用 underscore js 获取唯一项目 但我需要找到重复项而不是唯一值 var somevalue name john country spain name jan
  • 如何在Javascript中声明静态变量[重复]

    这个问题在这里已经有答案了 在下面的代码中 我希望有一个计数器来跟踪创建的 Person 对象的数量 这段代码没有这样做 我该如何实现呢 function Person this name Peter this counter this c
  • 将 javascript 放在 header 之外有多糟糕?

    这个问题几乎已经说明了一切 我开始添加一些功能到我的周末项目 http www my clock net 对于我和几个朋友来说 这是一个小应用程序 因为我们是交换生 所以它对我们来说有点有用 但事情是这样的 我在 php 中执行此操作并使用
  • jQuery 中如何判断 JSON 对象是否为空

    我有以下 JSON meta limit 20 next null offset 0 previous null total count 0 objects 我对对象感兴趣 我想知道对象是否为空并显示警报 像这样的东西 success fu
  • React JS“this”没有按预期工作

    我有下面的代码 save function var this this console log this refs itemText this setState isEditing false function console log In
  • 它们是“相同的”吗?代码大战

    这是完整的问题描述 给定两个数组 a 和 b 编写一个函数 comp a b Clojure 中的 compSame a b 来检查这两个数组是否具有 相同 元素以及相同的重数 这里 相同 意味着 b 中的元素是 a 平方中的元素 无论顺序
  • 如何使用javascript从特定标签获取HTML文档中的所有textNode?

    如何在不使用xpath或treewalker的情况下从单个数组中的一组特定标签中获取所有textNodes blockquote em h4 h6 p IE不允许您使用xpath和treewalker 请帮助我 如果脚本仅适用于 IE 那就
  • 'DOMException:使用'option:selected'选择器时无法在'Element'上执行'querySelectorAll'

    我正在运行一个页面 该页面在以下行中引发错误 var label select find option selected html select find option first html 为了完整起见 这里是完整的 jQuery 函数
  • 如何与使用 child_process.spawn 创建的新创建的服务器交互

    我正在尝试为我的私人托管的 反恐精英全球攻势 服务器制作一个前端 当我点击运行服务器时 在前端 一切正常 服务器启动并记录到控制台 但是如何查看服务器IP地址 服务器中的玩家等信息呢 这是我到目前为止运行服务器的内容 router post
  • 按钮导致页面重新加载

    我在我的页面上使用 html 和 jquery 在我的 html 中 我有一个按钮 单击该按钮将触发一个功能 当页面加载时 我调用文档准备中的主函数 这是我的代码 div div
  • 检测图像是否损坏或损坏

    我需要以编程方式检查用户在我的应用程序上选择作为壁纸的图像是否已损坏或损坏 基本上我为用户提供了选择自己的图像作为壁纸的选项 现在 当图像加载时 我只想检查它是否已损坏 如果您正在寻找 PHP 解决方案而不是 javascript 解决方案
  • Chrome 中的 addEventListener

    我正在关注 Lynda com 上有关新 DOM 事件模型的教程 这是我正在使用的代码 function addEventHandler oNode sEvt fFunc bCapture if typeof window event un

随机推荐

  • 从 NUnit TestContext 检索测试持续时间

    我希望能够在我的测试代码中访问测试的持续时间 我一直在看TestContextNUnit 中的类 但是当我找到有关 FullName 的信息时 我无法弄清楚在哪里访问测试的持续时间 TearDown public void TearDown
  • 如何在html中标记图片的版权?

    这主要是一个语义问题 我想把有版权的图片放在网站上 我知道figure和figcaption元素 但figcaption似乎不是最好的标签 这是我也需要的标题 如果我有这样的图像
  • 我可以在内容加载之前更改或控制 IFRAME 区域的颜色吗? [复制]

    这个问题在这里已经有答案了 可能的重复 fb 之类的按钮会在所有 ie 版本中的页面加载上创建白色背景 https stackoverflow com questions 6438502 fb like button creates a w
  • 如何将输入值传递到 Angular 6 中表单提交的函数中?

    所以当我按回车键时我的代码就可以工作 它运行performSearch函数成功 但是当我尝试通过点击提交按钮运行该函数时 出现错误 无法读取未定义的属性错误 这是我的代码
  • 如何用 Any 类型来包装价值?使用@Parcelize

    我在尝试将值放入 Any 类型时遇到问题 放入包裹中 我正在使用 kotlinx android parcel 中的 Parcelize Lint 警告我并提示要添加的消息 RawValue 但这没有帮助 我有 android os Bad
  • 表单元素的 action 属性可以为空吗?

    从 HTML5 开始 广泛使用和推荐的action 是无效的 HTML 从规格来看 如果指定了 action 和 formaction 内容属性 则必须具有 一个有效 URL 的值 那么正确的方法是什么action属性指向当前页面 我目前正
  • 在R中快速读取多个文件

    我有超过 10000 个 csv 文件 我需要对每个 csv 文件的每一列进行快速傅里叶变换 我可以访问 1000 个核心 最快的方法应该是什么 目前我有一个 for 循环按顺序读取每个文件并使用apply data 2 FFT 功能 我该
  • 如何确保应用程序只有一份副本在运行? [复制]

    这个问题在这里已经有答案了 可能的重复 防止 Linux 上出现多个进程实例 https stackoverflow com questions 2964391 preventing multiple process instances o
  • 如何在 Spring 中检查 Request Scope 的可用性?

    我正在尝试设置一些代码 如果 spring 的请求范围可用 这些代码将以一种方式运行 如果所述范围不可用 则以另一种方式运行 所涉及的应用程序是一个 Web 应用程序 但有一些 JMX 触发器和计划任务 即 Quartz 也会触发调用 E
  • 如何在 TypeScript 中将项目推送到 [string]

    我想将项目添加到 string 但以下代码在 param push 语句处失败 EDIT declare var sqlitePlugin any var query string SELECT FROM items var param s
  • 请求位置更新的频率超过 5 秒(Android Fused 位置)

    我正在制作一个实时位置监听应用程序 我需要调用位置更新每 3 秒一次 I use Fused https developer android com google play services location html地点 我的间隔设置为
  • 具有多个条件主题的 Firebase API 调用

    我在调用 FCM API 时遇到一个悲惨的问题 简而言之 当我使用以下方式调用 API 时 URL https fcm googleapis com fcm send Content Type application json Author
  • 祖先查询解析错误

    我正在努力让我的祖先查询 https developers google com appengine docs python datastore structuring for strong consistency工作 但我不断收到此错误
  • 如何在 C# 中将 int[] 转换为 byte[]

    如何在 C 中将 int 转换为 byte 一些代码将不胜感激 EDIT 我需要一个函数来执行以下操作 byte FuncName int Input 由于您的问题中的细节很少 我只能猜测您要做什么 假设您想将 2D 整数数组 展平 为 1
  • 后台工作人员:在执行 RunWorkerCompleted 之前确保 ProgressChanged 方法已完成

    假设我正在使用后台工作者并且我有以下方法 private void bw DoWork object sender DoWorkEventArgs e finalData MyWork sender as BackgroundWorker
  • 当调用函数时,堆栈帧真的会被推入堆栈吗?

    我很长一段时间以来所学到的方法是 当我运行程序时 立即进入堆栈的第一件事是 main 方法的堆栈帧 如果我从 main 中调用一个名为 foo 的函数 那么一个堆栈帧 即局部变量 自动对象 的大小 和参数也会被推入堆栈 然而 我遇到了一些与
  • CefSharp获取页面截图

    是否可以使用以下方式获取网页的屏幕截图CefSharp 我找到了有关的信息GetImage 方法 但似乎不再支持 还有其他办法吗 我需要从屏幕外浏览器获取屏幕截图 因此制作显示浏览器的屏幕屏幕截图并不是解决方案 我已经在分叉分支中实现了此功
  • 如何在android中使用openstreetmap通过纬度和经度获取城市名称[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 在我的应用程序中 我使用 osm 而不是谷歌地图 我有纬度和经度 所以从这里我将如何查询从 osm 数据库获取城市名称 请帮助我 我正在使
  • 显示一个句子,一次一个字符

    我想用 jQuery 一次一个字符地显示一个句子 有没有一个插件可以做到这一点或者我怎样才能达到这种效果 你可以写一个小插件来做到这一点 这里有一些可以帮助您入门的东西 远非完美 只是为了给您一个想法 function fn writeTe
  • 可索引类型 - TypeScript

    下面的语法 interface StringArray index number string 指出当StringArray索引为number 它将返回一个string 例如 let myArray StringArray myArray