如何编写符合给定接口的field变量以解决never类型赋值错误?
解决方案
1. 用类型断言将voters转为never类型
因为Fields里votes.voters的类型是never,你可以通过类型断言把空数组强制转为never,满足类型要求:
const field: Fields = { votes: { self: "self", votes: 0, hasVoted: false, voters: [] as never, }, };
2. 省略voters属性并对整个对象做类型断言
如果不需要voters属性,直接省略后通过类型断言让TypeScript认可对象符合Fields类型:
const field = { votes: { self: "self", votes: 0, hasVoted: false, }, } as Fields;
报错原因
Fields中votes的类型是Votes & {voters: never},交叉类型会让voters的类型变成User[] & never,最终等价于never。never类型代表永远不会存在的值的类型,普通的User[]数组无法赋值给它,这就是报错的根源。
内容的提问来源于stack exchange,提问作者Sabo Boz
相关产品推荐
相关产品推荐

