首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >打字本工具

打字本工具
EN

Stack Overflow用户
提问于 2021-08-17 00:36:23
回答 3查看 1K关注 0票数 1

我对类型记录很陌生,在尝试实现类中的接口时遇到了以下问题:

代码语言:javascript
运行
复制
interface TestInterface {
  x: number
}

class Test implements TestInterface {
  constructor() {
    this.x = 0
  }
}

// Class 'Test' incorrectly implements interface 'TestInterface'.
// Property 'x' is missing in type 'Test' but required in type 'TestInterface'.

但是,如果我在x: number之前将Test添加到constructor中,它就能工作。因此,如果您想检查在constructor中初始化的属性的类型,就必须在类本身上指定它。那么implementinterface是干什么用的呢?如果我想使用这个接口来检查它的实例的类型,它不是重复的吗,因为我必须在两个地方编写它?

EN

Stack Overflow用户

回答已采纳

发布于 2021-08-17 01:05:42

构造函数中的代码不能由类型记录检查以确定类是否正确地实现了接口。打字本不可能检查代码中的所有赋值,以确保类型是正确的,因此需要静态声明类型。interfaceimplements的目的不是减少您必须编写的代码量,而是声明代码中的对象类型,以便类型记录可以静态地检查代码是否与类型相一致。

通过说类实现了接口,您就可以有效地要求类型记录保持诚实,并检查类型是否确实一致。如果类型抄本仅仅相信您会在构造函数中做正确的事情,那么它就不会非常有效!请注意,构造函数可能包含条件逻辑、循环和其他代码,这意味着,即使在原则上,类型记录也不可能分析构造函数代码以确定是否保留了与implements的约定。

票数 3
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68810489

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档