将类型保护分配给临时const变量

时间:2019-04-11 14:51:05

标签: typescript

考虑一个示例(操场上的代码是here

interface Square {
  kind: 'square';
  size: number;
}

interface Rectangle {
  kind: 'rectangle';
  width: number;
  height: number;
}

type Shape = Square | Rectangle;

function calculateArea(shape: Shape) {
  if (shape.kind === 'square') {
    console.log(`area: ${shape.size ** 2})`);
  }
}

function calculateArea2(shape: Shape) {
  const { kind } = shape;

  if (kind === 'square') {
    console.log(`area: ${shape.size ** 2})`);
  }
}

calculateArea可以正常工作,可以将Shape完美地投射到Square中。

但是在第二个功能calculateArea2 kind中,类型防护被分配给了临时const变量,它破坏了自动类型防护

如何将类型保护分配给变量并仍然受益于自动类型检测?

0 个答案:

没有答案