【问题标题】:When I use generics to constrain an interface, why can strings be compiled [closed]当我使用泛型约束接口时,为什么可以编译字符串[关闭]
【发布时间】:2020-08-11 22:17:21
【问题描述】:

ts 解析器有隐式操作吗?为什么可以继承string的原型方法和属性?

【问题讨论】:

  • 请将代码发布为文本,而不是图像。
  • 一个字符串有一个长度属性和一个big method,为什么编译不出来? TypeScript 是结构类型的。也不清楚你认为这里继承了什么。
  • 在编译字符串的过程中是否有隐式操作?对于接口,我理解只能作用于对象,是不是理解错了

标签: javascript typescript


【解决方案1】:

回答标题中的问题,JS中的“abc123”是一个String实例,具有lengthbig()属性,这符合接口,所以说“abc123”扩展Lengthwise是有效的.

ts 解析器有隐式操作吗?为什么可以继承string的原型方法和属性?

它们不是继承的,它们只是碰巧通过了您的界面。在函数内部,除了arg.lengtharg.big() 之外,您将无法使用任何东西。尝试在函数内部使用更多字符串函数将无法编译(如果您的设置足够严格),但在函数外部您可以随意使用。

【讨论】:

  • 但是length和big是字符串原型上的方法。对于‘123’,它的类型是字符串,接口声明作用于对象。我知道我的理解有一些错误,但我还没有找到一个理论来证明
  • 为什么原型上的属性和方法都验证过了?这一步发生在哪里?
猜你喜欢
  • 2014-09-23
  • 2020-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多