当前位置: 首页 > 知识库问答 >
问题:

为记录分配接口或类型的类型脚本

贺善
2023-03-14

在阅读了这个问题或这篇文章后,我仍然对接口类型之间的细微差异感到有点困惑。

在本例中,我的目标是将一个简单对象分配给更广泛的记录

interface MyInterface {
  foobar: string;
}

type MyType = {
  foobar: string;
}

const exampleInterface: MyInterface = { foobar: 'hello world' };
const exampleType: MyType = { foobar: 'hello world' };

let record: Record<string, string> = {};

record = exampleType;      // Compiles
record = exampleInterface; // Index signature is missing

试试看嘛

当使用类型声明我的对象时,可以进行赋值,但当使用接口声明类似对象时,则不能进行赋值。它说索引签名缺失,但就我对索引签名的(有限的)理解而言,MyTypeMyInterface实际上都没有索引签名。

最后一行不编译而前一行编译的原因是什么?


共有1个答案

哈骞仕
2023-03-14

记录

资料来源:https://github.com/microsoft/TypeScript/pull/7029

相反,接口在声明时并不是最终的。由于声明合并,始终存在向同一接口添加新成员的可能性。

 类似资料:
  • 我在TypeScript 2.4中遇到一个错误。2在泛型类上,该泛型类的约束与不太严格的接口不兼容。我得到以下错误: TS/组件/Schedule.ts(37,13):错误TS2322:键入{人周末视图: PlanItemschduleView; project...属性“人员周末视图”与索引签名不兼容。类型PlanItemschduleView不能分配给类型IPlanItemschduleVie

  • 7.2. 接口类型 接口类型具体描述了一系列方法的集合,一个实现了这些方法的具体类型是这个接口类型的实例。 io.Writer类型是用的最广泛的接口之一,因为它提供了所有的类型写入bytes的抽象,包括文件类型,内存缓冲区,网络链接,HTTP客户端,压缩工具,哈希等等。io包中定义了很多其它有用的接口类型。Reader可以代表任意可以读取bytes的类型,Closer可以是任意可以关闭的值,例如一

  • 考虑以下TS定义: 没什么问题,但我想知道是否有一个等效?显然,可以将泛型传递到接口中,尽管这不是我想要的,例如: 这里的示例是在React代码的上下文中,但潜在的问题是基本的TS。

  • 问题内容: 我想组成另一种类型的类型,但用假冒替换字段之一(这是接口值)。我遇到的问题是正在使用基础字段,因此我似乎无法覆盖该字段。 我在这里演示了这个问题:https : //play.golang.org/p/lHGnyjzIS-Y 为什么打印?我要打印。 谢谢。 问题答案: 通过,您正在调用 提升的 方法,方法接收者将是哪种类型,并调用何处是哪种类型,这就是它打印的原因。 在Go中有嵌入,但

  • 问题内容: 我正在玩Go,发现一个我无法解决的问题。假设我有如下代码: 我导入了软件包并开始使用它: 我真的很喜欢我的助手“运行”,但是我想使其更加慷慨:我不希望人们总是向我传递MySQL客户端。可以是具有“ RunQuery”和“ Result”方法的任何东西。所以我尝试使用接口: 可悲的是,这不再编译了。我收到此错误: Go不支持此功能吗,或者我做错了什么? 问题答案: 应该返回接口,否则你总