typescript - 如何在嵌套对象字段上使用三元运算符来验证我的打字稿类型
问题描述
我在这里做错了什么还是设计使然?
我希望能够写出这样的东西。
type MyType = {
greeting: string;
value?: { valueType: string; value?: string };
};
function generate(name: string, input?: Partial<MyType['value']>): MyType {
return {
greeting: `Hello, ${name}`,
value: input?.valueType ? input : undefined,
};
}
如您所见,我使用三元运算符来验证我的input
对象是否有效,但 TypeScript 抱怨并给出错误:
类型“未定义”不可分配给类型“字符串”。(2322)
解决方案
如果您重新定义对象属性,Typescript 缩小会按预期工作。工作示例:
代码 :
type MyType = {
greeting: string;
value?: { valueType: string; value?: string };
};
function generate(name: string, input?: MyType['value']): MyType {
return {
greeting: `Hello, ${name}`,
value: input?.valueType ? {
valueType: input.valueType,
value: input.value
} : undefined,
};
}
推荐阅读
- node.js - 为什么我收到错误“标识符...已被声明”?
- visual-studio - 如何在 Visual Studio 编辑器中垂直拆分文件?
- r - 数据框聚合并保留字符列
- mysql - 列前缀从某处添加到列
- dataframe - 如何在python中运行和查看概率回归
- javascript - 在 console.log 的最后一行打印额外的空间
- assembly - 在 rax 而不是 rdi 中组装 x64 函数参数
- kdb - 在 DolphinDB 数据库中重写 kdb 脚本
- c# - 尝试在空对象引用 Xamarin LockScreen 上调用虚拟方法
- go - Go中的问题是附加到[]字节,写入文件并读取它