这个标题的重写版本可以是:Is this a bug in TypeScript? (Interpolated esliteral not being recognized as a string type)
P粉015402013
P粉015402013 2024-03-30 08:37:56
[React讨论组]

TS 似乎认为插值 prop 值的类型如下:

{ href: `#234${undefined}2213` }

不是字符串(当它们在可区分联合中使用时)?

下面的第三个 p3 实例会丢失 ev 字段的类型推断,但仅当 href 是内插的 esliteral 字符串时。

type BiomePlainLinkProps = {
  href: string;
  onClick?: (event: string) => void;
}

type BiomeButtonProps = {
  href?: never;
  onClick?: (event: number) => void;
}

export type ClickableDiscriminatedUnion =
  | BiomePlainLinkProps
  | BiomeButtonProps;

const p1: ClickableDiscriminatedUnion = {
  href: '2332132',
  onClick: (ev) => console.log('@@@@', ev), // ev is string here
}

const p2: ClickableDiscriminatedUnion = {
  onClick: (ev) => console.log('@@@@', ev), // ev is number here
}

const p3: ClickableDiscriminatedUnion = {
  href: `2${undefined}332132`,
  onClick: (ev) => console.log('@@@@', ev), // ev is any (not string) here
}

TS沙盒完整重现

P粉015402013
P粉015402013

全部回复(0)
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号