为什么不能使用打字稿来强制执行以下操作:
interface foo {
foofoo: string
feefee: string
faafaa: 'red' | 'blue'
}
变成Record<string, string>
吗?我该如何实现?
我尝试过:
string
类型instanceOfFoo as Record<string, string>
...没有任何帮助的喜悦
答案 0 :(得分:2)
TypeScript在这里发出错误信号不是因为这两种类型不能相互分配,而是因为它们没有共同的属性,所以这几乎总是错误产生的,并且会给出关于错误的说明对于不存在的情况该怎么办很清楚。
将'foo'类型转换为'Record'类型可能是一个错误,因为这两个类型之间都没有足够的重叠。如果这是故意的,请先将表达式转换为“未知” 。
强调我的。
所以您需要做的是类似
declare const x: foo; // there exists a variable x of type foo.
const y = x as unknown as Record<string, string>; // cast to unknown, then to Record.