扩展接口以包含日期类型

2024-01-02

我需要扩展 Typescript 中的接口以包含日期类型。

我尝试过以下方法

interface WithDate {
  [key: string]: Date;
}

但当我尝试延长WithDate,我收到错误:

interface Person extends  WithDate {
  id: number; // Property 'id' of type 'number' is not assignable to string index type 'Date'
  name: string;
  date: Date;
}

有什么想法如何修复这个错误吗?非常感谢


interface WithDate {
  [key: string]: Date;
}

通过此接口,您可以告诉 TypeScript 实现此接口的对象可以具有string键但仅Date values.

const obj: IWithDate = {
  key1: new Date(), // OK because it's a date
  key2: new Date('2020-01-01') // OK, another date
  key3: '2020-01-01' // Error, not a Date
  key4: true // Error, not a Date
  key5: 123 // Error, not a Date 
  // and any other objects besides `Date`s will cause a compiler error
}

所以当你extend the WithDate接口,TypeScript 看到索引签名并尝试合并这些接口,但是,这里存在冲突的形状:

{ id: string }

and

{ [k: string]: Date }

因此编译器会尽力解决这些冲突,并且由于这是一个相当模糊的情况,TypeScript 必须选择一些形状,它会选择{ [k: string]: Date }因为这是接口扩展最期望/最正确的行为。

您可能打算这样做:

interface WithDate {
 date: Date
}

interface Person extends WithDate {
 id: number;
 name: string;
}

const person: Person = {
 id: 1,
 date: new Date(),
 name: 'bob'
}

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

扩展接口以包含日期类型 的相关文章

  • angular2存储许多字符串值

    我有一些必须在许多组件中使用的字符串常量值 我不想在各个组件中硬编码或将它们写为字符串 在 Angular2 应用程序中维护它们的最佳位置在哪里 解决方案之一是将字符串放置在共享服务中 将服务注入到需要该属性的每个组件中 如果您的字符串不是
  • 在 Typescript 中创建动态变量引用

    提前感谢任何提供帮助的人 对于有经验的人来说 这似乎是一个简单的答案 但我已经浏览了互联网和几本参考书 并没有找到这个问题的直接答案 所以希望它也对其他人有帮助 我目前正在从 Actionscript 过渡到 Typescript 并且对普
  • Typescript 中的子类化

    我在 Typescript 中有一个存储类 它实现了Storage界面 说MyStorage 但它的方法太多了 所以我想用它来代替MyStorage getCandy MyStorage Candies getCandies 该结构可能看起
  • Observable:如果前面有map(),为什么不会导致subscribe()成功?

    我参考这个post https stackoverflow com questions 34671715 angular2 http get map subscribe and observable pattern basic unders
  • 复选框警报控制器 - 添加 3 个按钮

    我用 IONIC 2 Beta 版本制作了一个应用程序 我正在使用复选框警报控制器 并添加两个按钮 确定 和 取消 现在我需要在警报控制器中再添加一个按钮 我在下面实现了添加一个按钮 alert addButton Cancel alert
  • Angular 12.1 使用 typescript 添加 html 元素

    我正在通过 youtube 学习 Angular 但我正在尝试做一些新的事情 但我遇到了一个错误 我的代码附在下面 请帮助我 我想这样设置属性div setAttribute click popUp event 但我得到了错误 打字稿 ex
  • Angular 6 http.delete 请求不起作用

    我似乎无法让我的删除请求发挥作用 我已经完成了所有的获取请求 但现在我被困在删除上 似乎无法理解它 console log 的 URL 始终正确 并且删除请求通过 Postman 工作正常 有什么想法吗 HTML
  • 使用 Object.entries() 时保留键类型

    这是我的问题的一个例子 ts 游乐场演示 https www typescriptlang org play code C4TwDgpgBAKg1hEUC8UDkAzA9ltUA 6ARgIYBOehaAJhBiQK4A2wA0omgFCc
  • Node.js 10 的 TypeScript tsconfig 设置?

    有谁知道 Node js v10 x 需要哪些目标 库才能在没有生成器的情况下使用内置的 async await 我看到很多关于节点 8 的信息 但没有看到关于节点 10 的信息 从 Node js 开始10 0 0 100 支持ES201
  • 如何在 .tsx 打字稿中包含 .css 文件?

    如何在 tsx 中包含 css 文件以及如何使用它 即我如何渲染静态文件 import as React from react import Header from header import home css export class H
  • QUnit 不会运行测试

    我刚刚开始使用 QUnit 并遇到问题 我目前正在使用 TypeScript 它是一个 JavaScript 编译器 我在与我的主要课程结构平行的课程中进行测试 在每个类中 我都有一个名为 runTests 的函数 为了执行这些测试 我循环
  • 如何强制泛型

    有没有办法在打字稿中将泛型标记为强制 function onSubmit
  • 打字稿 - 找不到导出

    我在模块 A 中有这个 Typescript 文件 somefile tsx import remAuto from tidee life theme 在模块 B 中 我导出了 index js 文件remAuto index js imp
  • 如何使 Angular Reactive Formarray 中的级联下拉菜单工作而不弄乱下拉值

    我有一个角度 4 的表单 其中包含名字 姓氏和一个包含 2 个下拉菜单 选择 的表单数组 用作级联下拉菜单和一个删除按钮 表单的其余部分还包含一个发送按钮和一个添加选项按钮 我在此处添加了屏幕截图 以便您更好地理解 表单添加 删除按钮和发送
  • 如何在 package.json 中对嵌套子模块和 TypeScript 使用“导出”?

    我想利用新的优势 出口 https nodejs org api packages html packages exportsNode js 的功能package json这样我就可以执行以下操作 exports dist index js
  • Angular2:setTimeout仅调用一次

    我正在 Angular2 中实现需要使用的功能setTimeout My code public ngAfterViewInit void this authenticate loop private authenticate loop s
  • Svelte:无法识别导入的 TypeScript 文件

    我正在尝试使用 Rollup 使用 Svelte 和 TypeScript 构建一个应用程序 当我尝试构建我的 Svelte 组件时 我似乎无法让它编译我的 ts包含的文件 svelte成分 我不断收到此错误 Error Unexpecte
  • 如何将 zingchart 实现到 Angular2 中

    我有一个现有的项目 我想在其上实施 zingcharts 我尝试了 3 个不同的教程 主要来自 https blog zingchart com 2016 07 19 zingchart and angular 2 charts back
  • 添加 PayPal 付款方式 Ionic

    我正在尝试在我的用 Ionic 2 3 制作的应用程序上实现 PayPal 付款方式 我已经安装了 ionic cordova plugin add com paypal cordova mobilesdk npm install save
  • 如何解决函数签名中的“UndefVarError:T未定义”

    我正在尝试运行 其他人的代码 看起来像 function f T lt Number n Int alpha T beta T end 当 使用 该文件时我得到 UndefVarError T not defined Stacktrace

随机推荐

  • PHP/MySQL 时间戳和时区

    如果我使用 MySQL 中的 NOW 函数获取当前时间戳 我可以通过 php 获取该字段并给出不同时区的时间吗 基本上将当前时区的当前时间转换为另一个时区 您可以使用DateTimeZone http www php net manual
  • 从 ctypes Windll 获取错误消息

    我正在尝试使用 Python 脚本来更改 Windows 7 计算机上的壁纸 如果重要的话 我会从 node webkit 应用程序调用脚本 缩短的脚本如下所示 result ctypes windll user32 SystemParam
  • 使用 R 中的 xlsx 包更新 Excel 电子表格数据

    我有一个与 R 中的 xlsx 包相关的查询 我知道如何使用包中的大部分函数 并且到目前为止还没有遇到任何问题 我将首先显示我的代码 然后提出我的问题 Code Section1 library xlsx data1 lt iris dat
  • 重复条目:com/google/android/gms/internal/zzqv.class Android Studio

    在我的项目中 我已经实现了游戏服务游戏 首先我尝试添加 compile com google android gms play services 10 0 1 但我遇到了一些麻烦 我找到的解决方案是仅编译所需的库compile com go
  • Wi-Fi Direct 和 iOS 支持

    我想用Wi Fi Direct在解决方案中 但我不确定哪些平台支持它 Does Wi Fi Direct取决于 iPhone iOS 版本 我可以开发一个应用程序吗Wi Fi Direct运行 iOS 8 的 iPhone 4s 上的功能
  • Javascript 中捕获表单提交的事件是什么?

    这里有几个问题 我想知道我应该使用什么事件在表单提交时执行一些 Javascript 以进行一些验证 完成验证后 如何使用 Javascript 提交表单 假设您有一个名为myForm var form document getElemen
  • 如何计算行的平均值,同时排除数据框中行的零值

    我正在尝试计算数据框中每一行的平均值 每行都有零 我想从计算中排除这些 我不想删除整行 而只想删除零并计算每行中剩余值的平均值 如果行的值全部为零 则结果应为零 怎么样 nzmean lt function x if all x 0 0 e
  • 我可以在 中使用占位符吗

    我可以使用占位符吗
  • 无法查看 s3 上传的图像文件

    我正在使用 s3 上传图像文件 但每当我尝试使用 URL 以及从 s3 控制台下载时 都会下载图像文件 但是 图像查看器将看不到它 它只是显示不兼容的文件类型 myS3Function uploadFile request body fil
  • .lib 和 .dll 向后兼容性

    我目前有一个 VS6 非托管 C 库 以 lib 或 dll 形式提供 我想升级到 VS2010 但仍有 VS6 VS2005 和 VS2008 中的用户 VS2010 中内置的 lib 或 dll 可以在 VS6 VS2005 或 VS2
  • sequelize.query() 返回相同的结果两次

    我正在使用nodejs项目工作sequelize用于连接mysql数据库 我也在使用续集值 https www npmjs com package sequelize values用于从 Sequelize 实例获取原始数据 我写了下面的代
  • Rails 中 Postgresql 的准备语句

    现在我正在从 SQLite 迁移到 Postgresql 的过程中 遇到了这个问题 以下准备好的语句适用于 SQLite id 5 st ActiveRecord Base connection raw connection prepare
  • Glimpse 是否适用于返回 JsonResult 的操作?

    我有一个应用程序 其中大部分繁重工作都在每个返回 JsonResult 的操作中 它们是由 jQuery 从简单的视图中调用的 这些请求显示在 Glimpse 的 Ajax 选项卡中 但当每个请求完成时 它都会被评分并显示为灰色 我想检查每
  • Recyclerview不调用任何Adapter方法:onCreateViewHolder,onBindViewHolder,

    我的RecyclerView没有调用onCreateViewHolder onBindViewHolder 因此 recyclerview中不会出现任何东西 我放了日志进行调试 没有显示任何日志 可以是什么 我的适配器 public cla
  • 如何在不加载完整文件的情况下检查文件是否是图像?有没有图像头读取库?

    edit 抱歉 我想我的问题很模糊 我想要一种方法来检查文件是否not图像而不浪费时间加载整个图像 因为这样我就可以稍后完成其余的加载 我不想只检查文件扩展名 该应用程序仅查看图像 通过 检查有效性 我的意思是 检测并跳过目录中的非图像文件
  • MATLAB 环境调整 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 您如何调整 MATLAB 环境以更好地满足您的需求 每个答案进行一次调整 我运行 格式紧凑 来删除所有那些令人沮丧的空白行 这些空白行
  • 无法加载文件或程序集“System.IdentityModel,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089”或其依赖项之一

    我是 mvc 新手 我刚刚安装了 Visual studio 15 当我创建一个 mvc 项目并运行它时 无需任何修改 它给了我上述错误 我在另一台电脑上做了同样的事情 它可以工作 但在我的系统上它给了我错误 搜索解决方案但找不到任何具体的
  • 对移动日期选择器的任何建议[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • jQuery Ui:无法从 Div 中拖动元素并溢出

    我在 div 中有一个简单的 UL 并将溢出设置为自动和固定高度 每个 LI 都可以通过 jQuery 拖动 问题是我无法将它们从 div 中拖动 当拖动到边界时它们会消失 我已经查看了这个问题及其答案 但这里的解决方案似乎对我不起作用 设
  • 扩展接口以包含日期类型

    我需要扩展 Typescript 中的接口以包含日期类型 我尝试过以下方法 interface WithDate key string Date 但当我尝试延长WithDate 我收到错误 interface Person extends