Typescript:无法转换为通用“Record<string, string>”类型?

yen*_*yen 8 typescript

为什么打字稿不允许我投射以下内容:

interface foo {
  foofoo: string
  feefee: string
  faafaa: 'red' | 'blue'
}
Run Code Online (Sandbox Code Playgroud)

进入Record<string, string>?我怎样才能做到这一点?

我试过了:

  • 将字符串文字 red|blue 更改为仅string键入
  • 尝试过instanceOfFoo as Record<string, string>
  • 尝试将其更改为类型而不是接口

...没有任何快乐任何帮助表示赞赏

Mad*_*iha 8

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.
Run Code Online (Sandbox Code Playgroud)

游乐场链接