【问题标题】:Typescript type error doesn't make sense打字稿类型错误没有意义
【发布时间】:2018-03-25 18:56:49
【问题描述】:
interface A
  {
    x:string; y:string
  };

var a: A[] = [];
a.push(
  {x: "a", 
   y: "b"});

a.slice(-1).x = "foo";

我认为最后一行出错是因为 a.slice(-1) 的结果不是已知类型,所以它说“没有已知的属性 x”。

  1. 我的诊断正确吗?
  2. 正确的做法是什么?

【问题讨论】:

  • 您能否发布您遇到的确切错误?
  • 来自官方的关闭原因:寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定的问题或错误以及最短的代码在问题本身中重现它。

标签: typescript


【解决方案1】:

问题是 a.slice(-1) 返回一个数组(切片),即使它只有一个元素。数组没有“x”属性。但每个元素都有。

所以以下是预期的:

a.slice(-1)[0].x = "foo";

【讨论】:

  • TypeScript 保存你 ;)
  • 是的,但它可能会给出更有用的错误消息,例如:value typeof "array" does not have property "x"。
猜你喜欢
  • 2019-06-15
  • 1970-01-01
  • 1970-01-01
  • 2018-12-17
  • 2020-06-21
  • 2018-06-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多