![](/img/trans.png)
[英]Why can't Typescript infer function argument types for optional arguments?
[英]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,
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.