繁体   English   中英

为什么 typescript 无法正确推断类型

[英]why typescript can not infer types correctly

type A2 = {
    label: 'name';
    render: (v: string) => any;
  } | {
    label: 'age';
    render: (v: number) => any;
  } | {
    label: ['name'];
    render: (v: string) => any;
  } | {
    label: ['age'];
    render: (v: number) => any;
  }

  const a1: A2 = {
    label: 'age',
    render: (v) => v,
  }

  const a2: A2 = {
    label: ['name'],
    render: (v) => v,
  }

在 a1 中,渲染的“v”被正确推断为“数字”。但在 a2 中,它是“任何”。我想知道差异是什么以及为什么。 这是 Typescript 的错误吗?

只需按照 Samuli Hakoniemi 在评论中的建议将其发布为答案,以方便未来的观众。

您需要在数组定义中使用联合:

type A2 = {
    label: 'name' | 'age';
    render: (v: string | number) => unknown;
  } | {
    label: ['name' | 'age'];
    render: (v: string | number) => unknown;
  }

  const a1: A2 = {
    label: 'age',
    render: (v) => v,
  }

  const a2: A2 = {
    label: ['name'],
    render: (v) => v,
  }

Typescript 游乐场在这里

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM