TypeScript interface 中使用联合类型出现报错?

新手上路,请多包涵
interface Person {
    name: string,
    age?: number, 
    [propName: string]: string | number,
}

当Person接口中使用了联合类型时,age报错:类型“number | undefined”的属性“age”不能赋给“string”索引类型“string | number”。是什么原因啊?

阅读 2.1k
1 个回答

你的类型等同于

age: number | undefined

但是你设置了索引签名,interface中的所有成员都必须符合字符串的索引签名,此时你的agee显然是满足不了[propName: string]: string | number的,就报错了
可以改成这样

interface Person {
    name: string,
    age?: number, 
    [propName: string]: string | number | undefined,
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进